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