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

xiaoxiao2025-04-13  15

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 (块级作用域)
转载请注明原文地址: https://www.6miu.com/read-5028177.html

最新回复(0)