javascript - js 全局作用域污染是什么意思
PHPz
PHPz 2017-04-10 17:14:02
[JavaScript讨论组]

最近在做angular,都用controllerAs语法,说这样用的好处有一个条是避免污染全局作用域。我想问问污染全局作用域是什么意思?全局污染会有哪些不好的后果?感激不尽!!!

PHPz
PHPz

学习是最好的投资!

全部回复(3)
PHPz

额~~我也不知道怎么说,简单的理解就是不要直接在window下定义参数,因为很容易被修改覆盖导致代码出错;
不好的后果就是:
1.容易被修改导致代码出错
2.不方便维护,因为在出错的时候,有时候你很难去找到原因。

迷茫

就是一个全局变量一个函数变量,函数变量只在函数里生效。而全局影响比较大,因为你经常一个页面引入一大堆JS, 而且很多都不是自己写的,所以全局变量的使用得谨慎,因为很容易就会重名,出现命名冲突之类的麻烦。污染全局的大概意思就是,没有必要的全局变量,因为原本可以用函数变量。。。(会给其他脚本的全局变量带来例如命名冲突类的麻烦)

高洛峰

"污染全局作用域" 是指你讲本不应该出现在全局作用域下的变量声明在全局作用域下
例如你在一个a.js文件中
var myVar='1234';
//或者 myVar='1234';
那么在全局作用域下就会出现这个变量
而在另一个b.js文件中也同样的出现了如下的代码
var myVar='5678';
//或者 myVar='5678';

那么b.js中声明的变量将覆盖a.js中声明的变量,可能导致a.js中的函数执行出现你意向不到的结果
而这个结果的原因会随着你的代码的增多,引入文件的增多,会变得难以被发现

避免污染的一个方法是将变量包在一个函数体内(JS只有函数作用域),或通过闭包私有化
或模块化(本质上还是放在函数体内)

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

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