변수를 인수로 정의되지 않음 또는 전달되지 않음으로 설정할 수 있습니까?
JavaScript에 대해서 조금 혼란스럽네요.undefined
그리고.null
가치.
무엇인가.if (!testvar)
정말 그럴까?테스트 대상입니까?undefined
그리고.null
아니면 그냥undefined
?
변수가 정의되면 다시 클리어할 수 있습니까?undefined
(변수를 삭제하지 않음)
통과해도 될까요?undefined
매개 변수로요?예:
function test(var1, var2, var3) {
}
test("value1", undefined, "value2");
Javascript undefined와 null이 조금 헷갈립니다.
null
는 일반적으로 아웃오브밴드 'null', 'nil' 또는 'None' 오브젝트의 다른 스크립트 언어 개념과 동일하게 동작합니다.
undefined
한편, 이상한 JavaScript 괴짜입니다.아웃 오브 밴드 값을 나타내는 싱글톤 객체입니다.기본적으로 비슷하지만 다른 두 번째 객체입니다.null
다음 메시지가 나타납니다.
의 인수 리스트보다 적은 인수로 함수를 호출한 경우
function
스테이트먼트 리스트, 통과되지 않은 인수는undefined
다음과 같이 테스트 할 수 있습니다.function dosomething(arg1, arg2) { if (arg2===undefined) arg2= DEFAULT_VALUE_FOR_ARG2; ... }
이 방법으로는 이 두 가지를 구별할 수 없습니다.
dosomething(1)
그리고.dosomething(1, undefined)
;arg2
둘 다 같은 값이 됩니다.차이점을 알고 싶다면arguments.length
그러나 그와 같은 선택적 주장을 하는 것은 일반적으로 매우 읽기 어렵습니다.함수에 없는 경우
return value;
, 반환됩니다.undefined
. 일반적으로 이러한 반품 결과를 사용할 필요가 없습니다.변수를 선언할 때,
var a
블록 내의 스테이트먼트, 그러나 아직 값을 할당하지 않은 스테이트먼트, 즉,undefined
다시 한 번 말씀드리지만, 그런 것에 의존할 필요는 없습니다.으스스하다
typeof
연산자가 반환하다'undefined'
피연산자가 존재하지 않는 단순한 변수인 경우 참조하려고 할 때 일반적으로 발생하는 오류를 발생시키지 않습니다(또한 괄호로 둘러싸인 단순한 변수를 지정할 수도 있지만 존재하지 않는 변수를 포함하는 완전한 식은 지정할 수 없습니다).그것도 별로 쓸모가 없어요.이것은 논란의 여지가 있는 것이다.존재하지 않는 객체의 속성에 액세스 할 때 다른 모든 언어에서와 같이 오류가 즉시 발생하는 것은 아닙니다.그 대신에,
undefined
오브젝트. (그리고 그것을 사용하려고 하면undefined
오브젝트는 스크립트에서 나중에 잘못되기 때문에 JavaScript가 바로 오류를 발생시킨 경우보다 추적하기가 훨씬 어렵습니다.)이는 종종 속성의 존재를 확인하기 위해 사용됩니다.
if (o.prop!==undefined) // or often as truthiness test, if (o.prop) ...do something...
단, 할당이 가능하기 때문에
undefined
다른 값과 마찬가지로o.prop= undefined;
실제로 그 특성이 확실하게 있는지 아닌지를 감지하지 못합니다.를 사용하는 것이 좋습니다.
in
운영자: 원래 Netscape 버전의 JavaScript에는 없었지만, 현재는 어디에서나 사용할 수 있습니다.if ('prop' in o) ...
「」입니다.undefined
JavaScript 고유의scriptscriptscriptscriptscriptscriptscriptscript 。에 더 우아한 이 없는 함수 와는 별도로 JS는 더 우아한 메커니즘이 .undefined
피해야 합니다.는 안 null
는 (2) 및 (3 (4)는에 JavaScript에 때문에 2) (3)는 JavaScript입니다.(4)는 JavaScript입니다.
이냐.무.무.무.무.무.무.무슨.
if (!testvar)
? 정의되지 않은지 만 하나요정의되지 않은 것과 늘을 테스트합니까, 아니면 정의되지 않은 것만을 테스트합니까?
는 '진실성'을 한다.false
,undefined
,null
,0
,NaN
을 사용하다이 에는 정말 '아까', '아까', '아까', '아까', '아까', '아까' .undefined
그것은 관계하고 있다.그 좀 더 하게 IMO라고 말해야 .if (testvar!==undefined)
.
변수가 정의되면 다시 정의되지 않은 상태로 클리어할 수 있습니까(따라서 변수를 삭제).
을 할 수 있습니다.undefined
그래도 변수가 삭제되지는 않습니다.delete object.property
이치노
delete
변수라기보다는 속성을 위한 것입니다.에서는 스트레이트 스트레이트로 수 .delete variable
ECMAScript 제5판 엄밀을 자유롭게 을 할 수 하고 , '쓰레기 수집을 하다'라고 말하는 이 더 입니다.variable= null
.
파라미터로 정의되지 않은 패스할 수 있습니까?
네.
변수는 더 이상 정의되지 않기 때문에 정의되지 않은 것으로 정의할 수 없습니다(정의되지 않아야 함). 단순히 정의했을 뿐입니다.
할 수 없다undefined
연회에.기능을 제공합니다.만약 빈 값에 합격하고 싶빈 값을 전달하려면을 사용한다.null
대신.대신.
그 성명 스테이트먼트if(!testvar)
부울 true/false 값을 검사합니다, 이 특정한 것인지 부울true/false 값을 체크합니다를 테스트합니다.이 특정 값은이 테스트합니다.testvar
까지 평가하다에 계산된다.false
정의., 정의상까지null
그리고 그리고.undefined
라고도 평가되어서는안 된다 있으며 어느 평가될 것 같은데요.true
또는 또는false
하지만 자바 스크립트 단, 평가한다 JavaScript는null
~하듯이로false
만약 당신이 정의되지 않은 변수를 평가하기 위해 노력하며, 오류가 발생한다.정의되지 않은 변수를 평가하려고 하면 오류가 표시됩니다.
「 」의 적절한 를 실시하기 .undefined
★★★★★★★★★★★★★★★★★」null
, , 을 사용합니다.
if(typeof(testvar) === "undefined") { ... }
if(testvar === null) { ... }
기본적인 차이점은 입니다.undefined
★★★★★★★★★★★★★★★★★」null
다른 개념을 나타냅니다.
다다 if ifnull
를 사용할 수 있는 경우는, 「할 수 없다」, 「사용할 수 없다」, 「사용할 수 없다」의 유무를 할 수 .null
는 의도적으로 값으로 설정되었습니다.또는 번거로운 에러 캐치를 사용하지 않는 한 아직 값이 설정되지 않았는지 여부를 나타냅니다.를를,, 음음음음음음음음
var a;
a == null; // This is true
a == undefined; // This is true;
a === undefined; // This is true;
단,으로 값을 '비밀번호'로 null
, 「」undefined
나기 에, 「이러다」, 「이러다」, 「이러다」를 할 수 .null
★★★★★★★★★★★★★★★★★」undefined
§:
var b = null;
b == null; // This is true
b == undefined; // This is true;
b === undefined; // This is false;
"요컨대, 정의되지 않은 것은 JavaScript 고유의 혼란으로 모든 사람을 혼란스럽게 한다"와 같이 무시한 채 말하는 사람들에 의존하지 말고 여기에서 참조를 확인하십시오.혼란스럽다고 해서 엉망인 것은 아닙니다.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined
가 "JavaScript"가 될 수 합니다.true
,false
알 수 없음(sknown ( )null
없음(예: 음음(((( ), undefined
잘못되었다.error
를 참조해 주세요.
http://en.wikipedia.org/wiki/Undefined_value
null 값을 확인하는 가장 좋은 방법은
if ( testVar !== null )
{
// do action here
}
정의되지 않은 경우
if ( testVar !== undefined )
{
// do action here
}
는 미정의로 할당할 수 있습니다.
testVar = undefined;
//typeof(testVar) will be equal to undefined.
네, 정의되지 않은 것은 정의되지 않은 것으로 정의되어 있습니다.
console.log(
/*global.*/undefined === window['undefined'] &&
/*global.*/undefined === (function(){})() &&
window['undefined'] === (function(){})()
) //true
고객님의 경우:
test("value1", undefined, "value2")
독자적인 미정의 변수를 작성할 수도 있습니다.
Object.defineProperty(this, 'u', {value : undefined});
console.log(u); //undefined
번째 질문에 , 「 「 」 「 」 「 」 )가 .!
)는 지정된 값을 모두 부울 값으로 강제합니다.그렇게null
,0
,false
,NaN
그리고.""
(빈 문자열)은 모두 false로 표시됩니다.
JavaScript, 명령줄에서 변수를 정의되지 않음으로 설정하는 방법:
에서 변수를 정의되지 않음으로 설정합니다.js
Ubuntu 12.10에서 Java와 함께 제공되는 javascript 명령줄 터미널.
el@defiant ~ $ js
js> typeof boo
"undefined"
js> boo
typein:2: ReferenceError: boo is not defined
js> boo=5
5
js> typeof boo
"number"
js> delete(boo)
true
js> typeof boo
"undefined"
js> boo
typein:7: ReferenceError: boo is not defined
Javascript에서 변수를 정의되지 않음으로 설정한 경우:
myjs.html에 넣습니다.
<html>
<body>
<script type="text/JavaScript">
document.write("aliens: " + aliens);
document.write("typeof aliens: " + (typeof aliens));
var aliens = "scramble the nimitz";
document.write("found some aliens: " + (typeof aliens));
document.write("not sayings its aliens but... " + aliens);
aliens = undefined;
document.write("aliens deleted");
document.write("typeof aliens: " + (typeof aliens));
document.write("you sure they are gone? " + aliens);
</script>
</body>
</html>
다음과 같이 출력됩니다.
aliens: undefined
typeof aliens: undefined
found some aliens: string
not sayings its aliens but... scramble the nimitz
aliens deleted
typeof aliens: undefined
you sure they are gone? undefined
경고! 변수를 정의되지 않음으로 설정하면 변수를 다른 변수로 설정하는 것입니다.만약 어떤 교활한 사람이 도망친다면undefined = 'rm -rf /';
변수를 정의되지 않음으로 설정할 때마다 해당 값이 수신됩니다.
어떻게 하면 처음에 정의되지 않은 가치 외계인을 출력하고 계속 실행할 수 있는지 궁금하실 수도 있습니다.javascript hoosting 때문입니다.http://www.adequatelygood.com/JavaScript-Scoping-and-Hoisting.html
이것을 시험해 보세요.
// found on UglifyJS
variable = void 0;
재미삼아 변수에 "할당되지 않음"을 할당하는 꽤 안전한 방법이 있습니다.충돌하려면 무작위로 생성된 문자열과 정확히 동일한 이름을 가진 개체를 위한 프로토타입에 누군가가 추가해야 합니다.랜덤 문자열 생성기를 개선할 수 있다고 확신하지만, 이 질문에서 하나를 선택하였습니다.JavaScript에서 랜덤 문자열/문자 생성
이것은 새로운 오브젝트를 만들고 랜덤하게 생성된 이름으로 오브젝트상의 속성에 액세스하려고 하는 것으로 동작합니다.이러한 속성은 존재하지 않기 때문에 값이 정의되지 않은 것으로 간주됩니다.
function GenerateRandomString() {
var text = "";
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
for (var i = 0; i < 50; i++)
text += possible.charAt(Math.floor(Math.random() * possible.length));
return text;
}
var myVar = {}[GenerateRandomString()];
의 경우if (something)
그리고.if (!something)
일반적으로 정의되어 있는지 여부를 확인할 때 사용합니다.예를 들어 다음과 같습니다.
if (document.getElementById)
식별자는 부울값으로 변환됩니다.undefined
로 해석되다false
물론 다음과 같이 해석되는 다른 값(0이나 " 등)도 있습니다.false
단, 식별자에 이러한 값이 합리적으로 포함되어서는 안 됩니다.또는 이러한 값을 정의되지 않은 값과 동일하게 취급하는 것에 만족합니다.
Javascript에는delete
개체의 구성원을 삭제하는 데 사용할 수 있는 연산자.변수의 범위(예: 전역인지 여부)에 따라 변수를 삭제하여 정의되지 않도록 할 수 있습니다.
거기에는 없다undefined
정의되지 않은 리터럴로 사용할 수 있는 키워드입니다.함수 호출에서 매개 변수를 생략하여 정의할 수 있지만, 함수에 매개 변수를 적게 보내는 경우에만 사용할 수 있습니다. 중간에 매개 변수를 생략할 수 없습니다.
언급URL : https://stackoverflow.com/questions/2235622/can-i-set-variables-to-undefined-or-pass-undefined-as-an-argument
'itsource' 카테고리의 다른 글
{...obj1, obj2}의 정확한 기능 (0) | 2022.09.18 |
---|---|
MySQL에서 배치 삽입하는 방법 (0) | 2022.09.18 |
yum을 통해 MariaDB 5.5에서 MariaDB 10으로 업그레이드 실패 (0) | 2022.09.18 |
개체를 어레이로 변환하려면 어떻게 해야 합니까? (0) | 2022.09.18 |
Swisscom MariaDb Ent의 기본 테이블 스토리지 형식은 무엇입니까? (0) | 2022.09.18 |