变量的作用域
function y(){ let x = 5; x = x+2; } x = x +1;//ReferenceError: x is not defined
如果两个函数使用了相同的变量名,只要在函数内部,就不冲突
function y(){ let x = 5; x = x+2; } function y2(){ let x = 'a'; x = x+1; }
内部函数可以访问外部函数的成员,反之则不行
unction q(){ let q = 1; //内部函数可以访问外部函数的成员,反之则不行 function q2(){ let w = q+2; } let e = w + 3;//Uncaught ReferenceError: w is not defined }
假设,内部函数变量和外部函数的变量,重名!
function a(){ let x = 5; function aa(){ let x = 'A'; console.log('inner'+x);//innerA } console.log('outer'+x);//outer5 aa(); }
假设在JavaScript中函数查找变量从自身函数开始~,由内向外查找。假设外部存在这个同名的函数变量,则内部函数会屏蔽外部函数的变量
提升变量的作用域
function b(){ var x = 'xx' + yy; console.log(x); var yy = 'y'; }
结果:xundefined
function b2(){ var y; var x = 'x' + y; console.log(x); y = 'y'; }
这个是在JavaScript建立之初就存在的特性。养成规范:所有的变量定义都放在函数的头部,不要乱放,便于代码维护
function c(){ var a = 1, b = 2, c = 3, z,x; //之后随意用 }
//全局变量 let m = 1; function abc(){ console.log(m); } abc(); console.log(m);
全局对象 window
var x='xxx'; alert(x); alert(window.x);//默认所有的全局变量,都会自动绑定在window对象下
var x='xxx'; window.alert(x); var old_alert = window.alert; // old_alert(x); window.alert = function (){ } //发现alert()失效了 window.alert(123); //恢复 window.alert = old_alert; window.alert(456);
JavaScript实际上只有一个全局作用域,任何变量(函数也可以视为变量),假设没有在函数作用范围内找到,就会向外查找,如果在全局作用域都没有找到,报错ReferenceError
规范
由于我们所有的全局变量都会绑定到我们的window上,如果不同的js文件,使用了相同的全局变量,冲突->如何能够减少冲突?
//唯一全局变量 var yang = {}; //定义全局变量 yang.name = '杨不悔'; yang.add = function (a,b){ return a + b; }
局部作用域 let
function aaa(){ for (var i = 0; i < 100; i++) { console.log(i); } console.log(i+1);//问题? i 出了这个作用域还可以使用 }
ES6 let 关键字,解决局部作用域冲突问题!
function bbb(){ for (let i = 0; i < 100; i++) { console.log(i); } console.log(i+1);//ReferenceError: i is not defined }
常量 const
在ES6之前,怎么定义常量:只要全部用大写字母命名的变量就是常量,建议不要修改这样的值
var PI = '3.14'; console.log(PI); PI = '123';//可以改变这个值 console.log(PI);
const AS = '3.14';//只读变量 console.log(AS); AS = '5';//TypeError: Assignment to constant variable. console.log(AS);
我的一生
第1章-废物的一生
第50章-糟糕的婴儿
第300章-莫欺少年穷
第600章-莫欺中年穷
第1000章-莫欺老年穷
第1100章-不详的离去
第1101章-棺材板的震动
第1150章-盗墓贼的眼泪
第1200章-死者为大

浙公网安备 33010602011771号