JavaScript理解笔记—变量提升 全局作用域 名字空间

JavaScript会扫描整个函数体,把所有申明的变量提升到函数顶部。
注:var x=‘Tom’ 只提升声明,不提升赋值。
例如:console.log(x);var x=‘Tom’; 
运行不会报错,输出为:undefined
上述语句等效为:var x;console.log(x);x=‘Tom’;
所以在函数内定义变量时,要首先声明所有变量。


在函数外定义的变量为全局作用域,JavaScript默认有一个对象:window
全局作用域的变量实际上是被绑定到window的一个属性上。
例如:var course=‘99’;
直接访问course和访问window.course是一样的。


全局变量会绑定在window上,不同的JavaScript文件若使用相同全局变量或定义了相同名字的顶层函数,会造成命名冲突。
解决冲突方法:把所变量和函数全部绑定到一个全局变量里。
如:var MYAPP={}; //唯一全局变量
MYAPP.name=‘Tom’;    //其他变量
MYAPP.foo= function(){return ‘foo’ ;};


块级作用域   let(代替var声明块级作用域)
如: for(let i=0;i<10;i++){ 
i=100;}
则不能在for循环体之外使用变量i。

常量 const  (块级作用域)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值