javascript - JS全局变量和局部变量具体要怎么去理解和分辨?
PHP中文网
PHP中文网 2017-04-11 10:34:17
[JavaScript讨论组]

刚搜了一下,发现每个人说的都不一样,有没有准确和详细一点的解释?

比如JavaScript Dom编程艺术这里面的一个关于全局变量和局部变量的例子:

function square(num) {
    total = num * num;
    return total;
}
var total = 50;
var number = square(20);
alert(total);

最后输出的值为400。书中原文如下:

全局变量total的值变成了400。本意是让square()函数只把它计算出来的平方值返回给变量number,但因为未把这个函数内部的total变量明确地声明为局部变量,这个函数把名字同样是total的那个全局变量的值也改变了。

把这个函数写成如下所示的样子才是正确的:

function square(num) {
    var total = num * num;
    return total;
}

现在,全局变量total变得安全了,再怎么调用square()函数也不会影响到它、

请记住,函数在行为方面应该像一个自给自足的脚本,在定义一个函数式,一定要把它内部的变量全部明确地声明为局部变量。如果你总是在函数里使用var关键字来定义变量,就能避免任何形式的二定义隐患。

PHP中文网
PHP中文网

认证0级讲师

全部回复(3)
PHPz

函数外部 定义全局变量 可以用 var 或者直接 用变量,例如:var a=1 或者 a=1

这样都是全局变量

函数里面定义全局变量 不需要var 例如a=1,如果用了var 就是表示是局部变量!

怪我咯
// 全局
var a = 1;

function f(){
    // 局部
    var b = 2; 
}

function f2(){
    // 全局
    window.c = 3;
}

if(true) {
    // 全局
    var d = 4;
}

console.log(window.a);  // 1
console.log(window.b);  // error: b is not defind
console.log(window.c);  // 3
console.log(window.d);  // 4

如果你能用 window 访问到,那就是全局的。ES6之前 js 只有函数作用域,ES6开始引入块级作用域。

巴扎黑

全局变量就是在整个script里面都可以用到 局部变量就是在某个函数中定义的,只能在这个函数里面使用

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号