时间:2021-05-02
定义在函数体外的都属于全局变量,定义在函数体内的属于局部变量。这里的定义是指通过var声明的。
JavaScript有隐含的全局概念,意味着你不声明的任何变量都会成为一个全局对象属性。例如:
复制代码 代码如下:两个结果是一样的,说明myname是一个全局变量。
那么,隐式全局变量和明确定义的全局变量有没有区别呢。。答案肯定是有的,看下面的例子:
复制代码 代码如下:由上面的例子可以看出:在函数之外通过var定义的global_test1不能被删除,而没有经过var定义的global_test2和global_test3都被删除了(无论是否是在函数体内创建)。
总结来说,在函数体外通过var声明的全局变量不能被删除,而隐式全局变量是可以删除的。
这里要注意了:JavaScript有一种行为叫做“hoisting”(悬置/置顶解析/预解析)。
我们通过一个例子来说明:
复制代码 代码如下:你猜两次alert的内容一致吗??显然不一致,一致还用说吗。。实际输出是:"undefined", "local_huming"。
上面的例子等同于
复制代码 代码如下:第一次alert输出的myname并不是你以为的全局变量,而是和它在一个作用域(一个函数体)内的局部变量。虽然它还没有被声明,但被当作是声明了。这就是所谓的“hoisting”。
这样应该就明白了吧。当你在函数体中使用了一个变量,又在之后重新声明的话,就可能产生错误。
书写规范:
复制代码 代码如下:
好处在于:
1、所有局部变量都定义在函数开始,方便查找;
2、防止变量在定义之前使用的逻辑错误。
小伙伴们是否了解了javascript的变量声明了呢,以上内容很详细也很易懂,最后的总结也很中肯,小伙伴们不要错过。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了JavaScript的变量声明与声明提前用法。分享给大家供大家参考,具体如下:JavaScript的变量声明JavaScript的变量声明语句无论
变量提升JavaScript的变量提升有两种,用var声明的变量以及用function声明的变量。用var声明的变量我们先来看下面这段代码,a的值是多少代码1c
hoisting机制javascript的变量声明具有hoisting机制,JavaScript引擎在执行的时候,会把所有变量的声明都提升到当前作用域的最前面。
javascript中的所有变量都是类型松散的,不同于其他面向对象语音的变量声明都是强类型的.因此Javascript的变量声明是不包括类型的。通过var关键字
本文实例讲述了JavaScript变量提升和严格模式。分享给大家供大家参考,具体如下:1.什么是变量提升所谓的变量提升指的是:函数声明和变量声明总是会被解释器悄