function func(){
variable = "in";//이 변수 앞에는 var 키워드가 없습니다.
print(variable)}
func() ;
print(variable);//전역 변수 변수가 수정되었습니다
변수는 var 키워드 없이 func 함수에서 사용되므로 기본값은 전역 개체의 변수 속성에 대해 작동하는 것입니다(변수 값을 in으로 수정). 따라서 이 코드는 다음을 인쇄합니다.
in
in
2.3 연산자
연산자는 일반적으로 간과하기 쉽지만 이상한 것이 있습니다 문법 현상 여전히 연산자의 조합 비율이나 기능으로 설명해야 할 수도 있습니다. JavaScript에서 연산자는 JS 프로그래밍 경험이 있는 많은 사람들이 여전히 혼란스러워하는 부분입니다.
이 섹션에서는 주로 다음 연산자를 설명합니다.
2.3.1 대괄호 연산자([])
[] 연산자는 배열 객체와 객체에 사용할 수 있습니다. 아래 첨자로 배열에서 값을 가져옵니다.
var array = ["one", "two", "3", "four"];
array[0]
그리고 []도 객체에 작용할 수 있습니다. 속성 값은 다음과 같이 점(.) 연산자를 통해 가져옵니다.
var object = {
field : "self",
printInfo : function(){
print(this.field)
}
}
object.field;
object.printInfo();
그런 상황을 고려하면 객체를 순회할 때 속성의 키에 대해 아무것도 없습니다. 점(.)을 통해 액세스합니까? 이때 [] 연산자를 사용할 수 있습니다:
for(var key in object){
print(key ":" object[key])
}
실행 결과는 다음과 같습니다.
field:slef
printInfo:function (){
print(this.field)
}
2.3.2 도트 연산자(.)
도트 연산자의 왼쪽은 객체(속성 모음)이고 오른쪽은 속성 이름입니다. 왼쪽 객체의 속성인 것 외에도 오른쪽의 값도 있을 수 있다는 점에 유의해야 합니다. 오른쪽에 있는 자체 값의 개체가 됩니다.
var object = {
field : "self",
printInfo : function(){
print(this.field)
},
outter:{
inner : "내부 텍스트",
printInnerText : function(){
print(this.inner)
}
}
}
object.outter.printInnerText();
이 예제에서는 outter가 object의 속성으로 사용되는 동시에 printInnerText()의 개체입니다.
2.3.3 == 및 === 및 != 및 !==
== 연산자는 같음으로 읽고 === 연산자는 같음으로 읽습니다. 이 두 연산자 연산은 JavaScript 코드에서 자주 볼 수 있지만 그 의미는 정확히 동일하지 않습니다. 즉, 항등 연산자는 피연산자의 양쪽에서 유형 변환을 수행하지만 항등 연산자는 그렇지 않습니다. 예를 들어 설명하겠습니다.
print(1 == true);
print(1 === true)
print("" == false); === false);
print(null == undefine);
print(null === undefine)
실행 결과는 다음과 같습니다.
true
false
true
false
true
거짓
항등 및 항등 연산자의 규칙은 다음과 같습니다.
항등 연산자
피연산자의 유형이 동일한 경우 두 피연산자의 값이 동일한 것으로 판단됩니다. 같음이면 true(같음)를 반환하고, 그렇지 않으면 false(같지 않음)를 반환합니다.
피연산자의 유형이 다를 경우 다음 상황에 따라 판단됩니다.
◆ null undefine 은 같음
◆ 둘 중 하나는 숫자이고 다른 하나는 문자열이므로 문자열을 숫자로 변환하여 비교하세요
◆ 둘 중 하나가 true이면 변환하세요. 먼저 1로 변환(false인 경우 0으로 변환) 비교
◆ 한 값이 객체이고 다른 값이 숫자/문자열인 경우 toString() 또는 valueOf(를 통해 객체를 원래 값으로 변환합니다. ) method)
◆ 그 외의 경우는 바로 false를 반환
동등 연산자
피연산자의 타입이 다를 경우에는 가치 판단을 하지 않고 false를 반환
피연산자의 유형이 동일한 경우 다음 상황에 따라 판단합니다.
◆ 둘 다 숫자인 경우 값이 동일합니다. 같음(NaN은 자신과 같지 않다는 예외가 있음), 그렇지 않으면 같지 않습니다.
◆ 다른 프로그래밍 언어와 마찬가지로 문자열의 값이 같지 않으면 모두 문자열입니다. 이면 동일하지 않고 그렇지 않으면 동일합니다.
◆ 모두 부울 값이고 값은 모두 true/false이면 동일하고 그렇지 않으면 동일하지 않습니다.
◆ 두 피연산자가 동일한 객체(배열, 함수)를 참조하는 경우 완전히 같고, 그렇지 않으면 동일하지 않습니다.
◆ 두 피연산자가 동일한 객체(배열, 함수)를 참조하는 경우 ) 둘 다 null이거나 정의되지 않은 경우 동일하고, 그렇지 않으면 동일하지 않습니다.
예:
var obj = {
id : "self",
name : "object"
}
var oa = obj;
var ob = obj;
print(oa == ob);
print(oa === ob);
는 다음을 반환합니다:
true
true
객체의 예를 살펴보겠습니다.
var obj1 = {
id : "self",
name : "object",
toString : function(){
return "객체 1"
}
}
var obj2 = "객체 1"
print(obj1 == obj2); obj2);
반환 값은 다음과 같습니다.
true
false
obj1은 객체이고, obj2는 완전히 다른 구조의 문자열입니다. 등호 연산자를 사용하여 판단하면 obj1이 최상위 개체의 toString() 메서드를 오버로드하기 때문에 두 개는 완전히 동일합니다.
!=는 !==와 같지 않지만 ==/!==의 반대입니다. 따라서 JavaScript에서는 같음/같음 및 같지 않음/같지 않음을 사용할 때 유형 변환에 주의해야 합니다. 디버깅하기 어려운 일부 버그를 피할 수 있도록 같음/같지 않음을 사용하여 판단하는 것이 좋습니다.