JavaScript 특정 연습 1

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')) 진실

결과는 참이다

추천

출처blog.csdn.net/qq_48113035/article/details/123669670