在高级程序设计。 标记清楚没看懂
1.什么是“当变量进入环境”。什么是“当变量离开环境”。(来个例子)
2.一个函数定义了 ,是不是必须它执行,它的执行环境才存在?执行环境里的变量对象和作用域链才有意义。
如果该函数只定义不执行。 是不是没有变量对象和作用域链?
希望大神讲详细点 最好举个简单例子
在高级程序设计。 标记清楚没看懂
1.什么是“当变量进入环境”。什么是“当变量离开环境”。(来个例子)
2.一个函数定义了 ,是不是必须它执行,它的执行环境才存在?执行环境里的变量对象和作用域链才有意义。
如果该函数只定义不执行。 是不是没有变量对象和作用域链?
希望大神讲详细点 最好举个简单例子
1.什么是“当变量进入环境”。什么是“当变量离开环境”。
var color = 'blue';
function changeColor(){
color = 'red;
};
changeColor();
//当调用函数changeColor时,changeColor函数在执行时会使用到外部的color变量,这个时候color变量进入环境。
//当changeColor内的代码执行完毕后,这个时候color变量离开环境。
2.一个函数定义了 ,是不是必须它执行,它的执行环境才存在?执行环境里的变量对象和作用域链才有意义。
如果该函数只定义不执行。 是不是没有变量对象和作用域链?
//每个函数都有自己的执行环境。当函数执行时,执行环境会被推入环境栈中,来执行函数中的代码,这个时候会创建当前环境的作用域链,供当前环境中的变量或者函数访问。当函数执行完,会退出执行的环境栈,销毁作用域链和相关变量。
var color = 'blue';
function changeColor(){
var a = 1;
color = ‘red‘;
};
console.log(a);//undefined
//这里color 的执行环境是window ,a的执行环境是changeColor ,当调用changeColor时会把changeColor推入到环境栈中执行,这个时候会创建作用域链,如果changeColor作用域链内找不到color 会去父级作用域链中找,找不到会报undefined。
//console.log(a);//undefined 由于window作用域链中没有a,所以undefined。
这是我的理解,相互学习,希望对你有帮助