继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

关于JavaScript全局变量与局部变量的初级理解

__blank
关注TA
已关注
手记 1
粉丝 9
获赞 81

以下对于全局变量与局部变量的初级理解,主要是来自《JavaScript DOM编程艺术(第2版)》里的内容理解出来的,万分感谢这本好书,希望有兴趣的朋友也去买下这本好书吧,不会后悔的。

最初接触JavaScript的时候觉得界定全局变量与局部变量的界限,就是函数后面的花括号'{}'。通过学习,现在了解到,'var'这个关键字也会对函数内外的变量产生深远地影响。如果你能清楚的认识到什么时候要用var,什么时候不用,那在参考别人代码的同时也就不会只是单纯的认为这儿缺少一个var只是因为这个人在编写代码的时候在偷懒了。

当函数内外的变量名出现重名的时候(虽然很少会遇到这种情况,平时我也极力地注意变量名的使用,但是不排除脑袋糊的时候会有差错),var这个关键字用得好会帮助你,用得不好会是你的绊脚石。

正式开始,其实正文很短的,哈哈:

当在一个脚本里var声明一个变量x,那这个x肯定是一个全局变量,如果一个函数内部也出现一个x变量,那他影不影响这个全局变量x就得看局部变量x的前面有没有var这个关键字了。

如果在函数内部是 var x = 1;那么这个x在这个函数内部就是个安分的局部变量,一出函数,不会对全局变量x的赋值有任何影响。

如果在函数内部是 x = 1;那么函数的花括号是不能阻挡这个激进分子x的,之前的全局变量x所赋值将会被改变成为1,当然还是得看先后顺序,在后面的会覆盖前面的值。

通过比较不难发现,要是不想故意的让局部变量去影响一个同名全局变量,那就还是老老实实地在每个新变量名字前加个var吧。

也许在小篇幅的代码中很难出现重名的变量,但是你要想想,你以后可是每天千来行代码的大师啊,别等写到最后发现总是不对那就头大了。

以上文字及以下代码都是本人学习得来的领悟,有不足之处请提意见,望海涵,谢谢。

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head>

<body>
<script>
//示例一
var a_1 = 400;              //全局变量
function myFun1(num){
    a_1 = num+num;          //由于没有var声明,函数内的a_1也被视为一个全局变量
    return a_1;
}
var av = myFun1(10);
alert("示例一的结果:"+a_1);   //因为函数中a_1赋值的被视为全局变量,所以a_1被影响的值为20 

//示例二
var a_2 = 400;              //全局变量
function myFun2(num){
    var a_2 = num+num;      //由于有var声明,函数内的a_2被视为一个局部变量
    return a_2;
}
var av = myFun2(10);
alert("示例二的结果:"+a_2);   //因为函数中a_2赋值的被视为局部变量,所以a_2没有被影响的值为400 
</script>
</body>
</html>
打开App,阅读手记
12人推荐
发表评论
随时随地看视频慕课网APP

热门评论

注视那儿的确打错了,谢谢提醒

最下面的例子是想说a2吧,打错了?

查看全部评论