详解JavaScript 作用域
作用域是可访问变量的集合。
JavaScript作用域
在JavaScript中,对象和函数同样也是变量。
在JavaScript中,作用域为可访问变量,对象,函数的集合。
JavaScript函数作用域:作用域在函数内修改。
JavaScript局部作用域
变量在函数内声明,变量为局部作用域。
局部变量:只能在函数内部访问。
//此处不能调用carName变量 functionmyFunction(){ varcarName="Volvo"; //函数内可调用carName变量 }
因为局部变量只作用于函数内,所以不同的函数可以使用相同名称的变量。
局部变量在函数开始执行时创建,函数执行完后局部变量会自动销毁。
JavaScript全局变量
变量在函数外定义,即为全局变量。
全局变量有全局作用域:网页中所有脚本和函数均可使用。
varcarName="Volvo"; //此处可调用carName变量 functionmyFunction(){ //函数内可调用carName变量 }
如果变量在函数内没有声明(没有使用var关键字),该变量为全局变量。
以下实例中carName在函数内,但是为全局变量。
//此处可调用carName变量 functionmyFunction(){ carName="Volvo"; //此处可调用carName变量 }
JavaScript变量生命周期
JavaScript变量生命周期在它声明时初始化。
局部变量在函数执行完毕后销毁。
全局变量在页面关闭后销毁。
函数参数
函数参数只在函数内起作用,是局部变量。
HTML中的全局变量
在HTML中,全局变量是window对象:所有数据变量都属于window对象。
//此处可使用window.carName functionmyFunction(){ carName="Volvo"; }
你知道吗?
你的全局变量,或者函数,可以覆盖window对象的变量或者函数。
局部变量,包括window对象可以覆盖全局变量和函数。
补充
ES6中的let关键字
let允许你声明一个作用域被限制在块级中的变量、语句或者表达式。与var关键字不同的是,它声明的变量只能是全局或者整个函数块的。
let语法:
letvar1[=value1][,var2[=value2]][,...,varN[=valueN]];
let声明的变量只在其声明的块或子块中可用,这一点,与var相似。二者之间最主要的区别在于var声明的变量的作用域是整个封闭函数。
let和var的区别代码实例:
functionvarTest(){ varx=1; if(true){ varx=2;//同样的变量! console.log(x);//2 } console.log(x);//2 } functionletTest(){ letx=1; if(true){ letx=2;//不同的变量 console.log(x);//2 } console.log(x);//1 }
以上就是详解JavaScript作用域的详细内容,更多关于JavaScript作用域的资料请关注毛票票其它相关文章!