[JQUERY] 변수 이름을 가져옵니다. 자바 스크립트 "반사"
JQUERY변수 이름을 가져옵니다. 자바 스크립트 "반사"
해결법
-
1.예를 들어 .NET을 사용하고 있기 때문에 잠깐 탐험 해 봅시다. C #에서는 표현식을 취하는 함수를 만들 수 있습니다.
예를 들어 .NET을 사용하고 있기 때문에 잠깐 탐험 해 봅시다. C #에서는 표현식을 취하는 함수를 만들 수 있습니다.
void BadArgument<T>(Expression<Func<T>> argExpr) { }
그러나이 함수의 호출에서 변수 이름을 추출 할 수 있으려면 호출이 항상 올바른 구문을 정확하게 사용하는지 확인해야합니다 (비록 컴파일 시간을 적용 할 수있는 방법이 없지만).
if(x < 0) BadArgument(() => x);
그래서 그것은 완료 될 수 있지만, 매우 깨지기 쉽고 꽤 느립니다. 기본적으로 LAMBDA expression () => x를 기반으로 전체 표현식 트리를 만들기위한 지침을 생성합니다. 호출하는 함수는 해당 표현식 트리를 구문 분석하고 인수의 이름을 찾을 수 있습니다.
이런 종류의 일은 자바 스크립트에서 수행 될 수 있습니까? 확실한!
자바 스크립트에서는 폐쇄가 내부 기능을 통해 생성되므로 위의 람다 표현과 동등한 것들은 다음과 같습니다.
function(){return x;}
그리고 JavaScript는 스크립팅 언어이므로 각 함수는 자체 정의 와열과 동일합니다. 즉, 위의 함수에서 tostring ()을 호출하는 것은 다음과 같습니다.
function(){return x;}
이 JSFiddle은 로깅 스타일 함수 에서이 값을 활용할 수있는 방법을 보여줍니다. 그런 다음 결과 펑션 문자열을 구문 분석 할 수 있습니다. 이는 .NET Expression 트리를 파싱하는 것보다 약간 더 문제가 될 것입니다. 또한 X의 실제 값을 얻는 것은 .NET보다 훨씬 쉽습니다.
그러나 당신이 그것을 할 수 있기 때문에 당신이 해야하는 것은 아닙니다. Gee-Whiz Parlor Trick만큼 멋지지만, 그것이 바로 아래에 올 때 그것은 가치가 없습니다.
-
2.실제로 당신은 할 수 있습니다. 여기에 스 니펫이 있습니다.
실제로 당신은 할 수 있습니다. 여기에 스 니펫이 있습니다.
function getVarName(v) { for (var key in window) { if (window[key] === v) return key; } } var testvar = 13142; function test(t) { var varName = getVarName(t); // window[varName] -- your variable actualy alert(varName); } test(testvar); // testvar
다른 문제는 동일한 변수가 포함 된 VAR을 생성하는 경우입니다. 그런 다음 첫 번째 var가 반환됩니다.
-
3.너는 할 수 없다. 그러나 변수 이름을 이미 알고 있으므로 (문자열의 끝으로 그것을 연결하기 위해 그것을 사용해야 함), 왜 그냥 입력하지 않으시겠습니까?
너는 할 수 없다. 그러나 변수 이름을 이미 알고 있으므로 (문자열의 끝으로 그것을 연결하기 위해 그것을 사용해야 함), 왜 그냥 입력하지 않으시겠습니까?
즉,
logger.log('variable x has invalid value '+x);
-
4.변수 이름을 얻는 것이 쉽습니다
변수 이름을 얻는 것이 쉽습니다
//This is variable you want to get the name var prop; var obj = {prop}; for(var propName in obj){ alert(propName); break; }
또한 여기에서 시도 할 수 있습니다.
편집
코멘트 @brady에 감사드립니다
object.keys ({variableName}) [0]는 변수 이름을 제공합니다.
function(x,y) { const key = (obj) => Object.keys(obj)[0]; if (x === 0) logger.log('variable ' + key({x}) + ' has invalid value ' + x) // logs: 'variable x has invalid value 0) if (y === 0) logger.log('variable ' + key({y}) + ' has invalid value ' + y) // logs: 'variable y has invalid value 0) }
from https://stackoverflow.com/questions/9795773/get-variable-name-javascript-reflection by cc-by-sa and MIT license
'JQUERY' 카테고리의 다른 글
[JQUERY] CSS 선택기와 jQuery 필터 간의 차이점? (0) | 2020.11.02 |
---|---|
[JQUERY] HTML5 캔버스 Todataurl은 공백을 반환합니다 (0) | 2020.11.02 |
[JQUERY] JavaScript로 다중 파일 업로드 컨트롤에서 파일 이름 검색 (0) | 2020.11.02 |
[JQUERY] 서버 측 페이징을 사용한 JQGRID 클라이언트 측 정렬 - 데이터가 사라집니다. (0) | 2020.11.02 |
[JQUERY] jQuery / Ajax 및 PHP / MySQL을 사용하여 첫 번째 드롭 다운의 선택을 기반으로 두 번째 드롭 다운을 채우는 방법은 무엇입니까? (0) | 2020.11.02 |