(function(){
var x = y = 1;
})();
console.log(y);
console.log(x);
console.log(y)输出结果为:1;
console.log(x)输出结果为:error,直接报错;
解析声明变量:从右向左赋值,可分解为:y = 1;var x = y;可见 y 为全局变量,x为闭包函数内的局部变量,在console.log输出时是在闭包函数外部获取变量,所以获取不到 x 而直接输出error,y 为全局变量且值为 1,故输出1。
var name = 'wold';
(function(){
if(typeof name === 'undefined'){
var name = 'jack';
console.log('goodbay'+name);
}else{
console.log('hello'+name);
}
})();
输出结果为:goodbay jack;
解析:在闭包函数的内部无法访问到外部变量,也就是在外部定义的var name = ‘wold’,在程序执行到if语句是没有获取到,但是在函数内部已经定义了name变量,在使用在赋值之前,所以为undefined类型,所以输出goodbay jack;