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