变量的作用域
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章-死者为大
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义