JavaScript
发布时间:2022-04-16 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了JavaScript变量声明详解,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_
675_0@定义在函数体外的都属于全局变量,定义在函数体内的属于局部变量。这里的定义是指通过var声明的。
@H_
675_0@JavaScript有隐含的全局概念,意味着你不声明的任何变量都会成为一个全局对象属性。例如:
@H_
675_0@
{
myname = "huming";
alert(my
Name);
}
test(
); // "huming"
alert(my
Name); //"huming"
@H_
675_0@两个结果是一样的,说明myname是一个全局变量。
@H_
675_0@那么,隐式全局变量和明确定义的全局变量有没有区别呢。。答案肯定是有的,看下面的例子:
@H_
675_0@
{
global_test3 = 3; // 反面教材
}()
);
// 试图删除
delete global_test1; //
false
delete global_test2; // true
delete global_test3; // true
// 测试该删除
alert(typeof global_test1
); // "
number"
alert(typeof global_test2
); // "undefined"
alert(typeof global_test3
); // "undefined"
@H_
675_0@由上面的例子
可以看出:在函数之外通过var定义的global_test1不能被删除,而没有经过var定义的global_test2和global_test3都被删除了(无论是否是在函数体内创建)。
@H_
675_0@总结来说,在函数体外通过var声明的全局变量不能被删除,而隐式全局变量是可以删除的。
@H_
675_0@这里要注意了:JavaScript有一种行为叫做“hois
Ting”(悬置/置顶解析/预解析)。
@H_
675_0@我们通过一个例子来说明:
@H_
675_0@
{
alert(my
Name);
var myname = "local_huming";
alert(my
Name);
}
test(
);
@H_
675_0@你猜两次alert的内容一致吗??显然不一致,一致还用说吗。。实际输出是:"undefined","local_huming"。
@H_
675_0@上面的例子等同于
@H_
675_0@
{
var myname;
alert(ma
Name);
myname = "local_huming";
alert(my
Name); // "local"
}
test(
);
@H_
675_0@第一次alert输出的myname并不是你以为的全局变量,而是和
它在一个作用域(一个函数体)内的局部变量。
虽然它还没有被声明,但被当作是声明了。这就是所谓的“hois
Ting”。
@H_
675_0@这样应该就明白了吧。当你在函数体中使用了一个变量,又在之后重新声明的话,就可能产生错误。
@H_
675_0@书写规范:
@H_
675_0@
{
var a = 1,
b = 2,
c = a + b,
d =
{},
e,
f;
// function body...
}
@H_
675_0@好处在于:
@H_
675_0@1、所有局部变量都定义在函数开始,方
便查找;
@H_
675_0@2、防止变量在定义之前使用的逻辑错误。
@H_
675_0@小伙伴们是否了解了javascript的变量声明了呢,以上内容
很详细也很易懂,最后的总结也很中肯,小伙伴们不要错过。
大佬总结
以上是大佬教程为你收集整理的JavaScript变量声明详解全部内容,希望文章能够帮你解决JavaScript变量声明详解所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。