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 中 this指向myObject对象,结果是"foo";

第二行 self.foo 中 self是 this指向myObject对象,结果是"foo";

第三行 this.foo 中,因为是IIFE(立即执行函数),所以this指向window,结果是undefined;

如果将代码改为 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.下列函数的this指向?

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,为对象window;第四个隐式绑定,指向o对象;

第五个立即执行函数,this指向window。

5.({} + 'b' > {} + 'a')返回值是()

console.log({} + 'b') "[object Object]b"
console.log({} + 'a') "[object Object]a"
console.log(({} + 'b' > {} + 'a')) true

结果为true

猜你喜欢

转载自blog.csdn.net/qq_48113035/article/details/123669670