题目一
var x = 1;
function func(x, y = () => {
// 5,闭包:函数的执行依赖变量作用域,这个作用域是在函数定义时决定的.
//调用func时才定义这个方法,此时x=5
console.log(x);
x=2
}){
var x = 3;
y();
console.log(x); // 当前块级作用域x=3
}
func(5);
console.log(x); // 全局作用域x=1
题目二
function Foo() { getName = function () { console.log(1); }; return this; }
Foo.getName = function () { console.log(2); };
Foo.prototype.getName = function () { console.log(3); };
var getName = function () { console.log(4); };
function getName() { console.log(5); }
Foo.getName();//2
getName();//4
Foo().getName();//1
getName();//1
new Foo.getName(); // 2;等价于 new Foo.getName,使用new调用构造函数,圆括号不是必须的
new Foo().getName(); //3; 等价于(new Foo()).getName(),为什么不是new (Foo().getName())
new new Foo().getName(); // 3; 等价于 => new (new Foo().getName)()
// new () . 三者运算符的优先级是什么样的?结合规律是什么?
var a = [0];
if ([0]) {
console.log(a == true); // 竟然是false
} else {
console.log("wut");
}
网友评论