1. "window2"라는 새 창을 열려면 ()를 전달할 수 있습니다.
window.open("http://www.w3school.com.cn","window2")
분석: window.open() 메서드는 지정된 리소스를 지정된 이름으로 브라우저 컨텍스트에 로드합니다. 첫 번째 매개변수는 url이고 두 번째 매개변수는 이름입니다.
2. 다음 JavaScript 코드의 출력은 무엇입니까?
var myObject = {
foo: "bar",
func: function() {
var self = this;
console.log(this.foo); //"bar"
console.log(self.foo); //"bar"
(function() {
console.log(this.foo); //undefined
console.log(self.foo); //"bar"
}());
}
};
myObject.func();
구문 분석: 첫 번째 줄에서 this.foo는 myObject 개체를 가리키고 결과는 "foo"입니다.
두 번째 줄 self.foo에서 self는 myObject 객체를 가리키는 this이며 결과는 "foo"입니다.
세 번째 줄에서 this.foo는 IIFE(즉시 실행 함수)이기 때문에 this는 window를 가리키고 결과는 정의되지 않습니다.
코드를 console.log(this.myObject.foo)로 변경하면 결과는 "foo"입니다.
네 번째 줄 self.foo는 바로 실행되는 함수에 self 변수가 없기 때문에 스코프 체인을 따라 위쪽으로 검색하여 마지막으로 두 번째 줄과 같이 myObject를 가리키고 결과는 "foo"입니다.
3. 다음 JavaScript 코드를 실행하면 출력 결과는 ()
var a = 4399 < 0 || typeof(4399 + '');
console.log(a); // string
분석: 할당 연산자가 우선 순위가 낮다는 것을 먼저 이해해야 하므로 혼동하지 마십시오. 선행 연산자가 true이면 바로 true를 반환하고, 선행 값이 false이면 바로 다음 값을 반환합니다.
4. 다음 기능의 이 점은 무엇입니까?
setTimeout(function(){
console.log(this); // window
},1000);
function Star(){
console.log(this); // Star对象
}
new Star();
var o = {
sayHi:()=>{
console.log(this); // window
}
}
o.sayHi();
var o = {
sayHi:function(){
console.log(this); // o对象
}
}
o.sayHi();
(function(){
console.log(this); // window
}());
분석: 첫 번째 this 기본 바인딩은 window를 가리키고, 두 번째 new 바인딩은 new가 만든 개체를 가리킵니다.
세 번째 화살표 함수는 개체 창인 상위 계층의 this를 가리키고, 네 번째 암시적 바인딩은 o 개체를 가리킵니다.
다섯 번째 즉시 실행 함수인 this는 창을 가리킵니다.
5. ({} + 'b' > {} + 'a') 반환 값은 ()
콘솔.로그({} + 'b') | "[오브젝트 오브젝트]b" |
콘솔.로그({} + 'a') | "[오브젝트 오브젝트]a" |
console.log(({} + 'b' > {} + 'a')) | 진실 |
결과는 참이다