> 文档中心 > JavaScript专项练习1

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