首页 > 代码库 > 关于JavaScript 中的变量
关于JavaScript 中的变量
- JS的变量声明语句永远是在其作用域中最先执行的,不论其定义的位置在哪里;
- 函数体内部,局部变量的优先级比同名的全局变量高。
- Javas作用域分类
- 未使用var定义的变量不论定义在什么位置都是全局变量,全局变量实质属于window下的属性
1 JS的变量声明语句永远是在其作用域中最先执行的,不论其定义的位置在哪里
2 var test= function()3 {4 console.log(s);//输出结果为undefined5 var s="you";6 };7 test();
原因就是在test函数作用域内,虽然var s="you"在console后面,但是由于变量的声明语句会是最先执行,因此等价于:
2 var test= function()3 {4 var s;//相当于此处先执行了一步变量声明 但未赋值5 console.log(s);//输出结果为undefined6 var s="you";7 };8 test();
console.log(s)结果为undefined;
2函数体内部,局部变量的优先级比同名的全局变量高
var s="hello"; var test= function() { var s="you"; console.log(s);//输出结果为”you“ }; test();
局部变量优先级高,所以打印结果为"you"
3JS的作用域分类
Javascript作用域分类只有两种:全局作用域和方法作用域
函数又称作方法,因此方法作用域可以理解为函数内作用域,不同于C或者C++语言,JS没有块级作用域,for(var i=0;;i++)此处的i作用域就是for循环所在函数的作用域,而不是仅仅在for循环内部有效;
4未使用var定义的变量不论定义在什么位置都是全局变量
function test()//定义函数test{ i=100; }test()//执行函数testconsole.log(i);//输出100
console.log(window.i);//输出100
另外,需要注意的是 function XXX(){};仅仅是定义一个XXX()的函数,并没有执行函数代码,若此处没有test(),那么输出的i是undefined,也可以将
function XXX(){//code};XXX();合并写成:(function XXX(){//code})():
形如:(function XXX(){})()是先定义函数XXX并且执行函数;此种写法的好处是能保证变量生存期,较少全局变量,易于变量回收
关于JavaScript 中的变量
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。