javascript
JS中避免命名冲突常用的方法:前缀,闭包,命名空间,模块化开发。
① 在变量或函数名前根据功能模块,加上不同的前缀。如平台platform_,订单trade_。
② 闭包
上面闭包函数是简单实现计数器加减功能。使用闭包实现效果如下:
也可以使用匿名函数的方式去实现:
执行效果如下,
每个闭包都是引用自己词法作用域内的变量 counter。
每次调用其中一个计数器时,通过改变这个变量的值,会改变这个闭包的词法环境。然而在一个闭包内对变量的修改,不会影响到另外一个闭包中的变量。
使用匿名函数的方式使用闭包,提供了许多面向对象编程的相关好处,特别是数据隐藏和封装。
③ 命名空间
实现的效果演示:
大型项目实现方案:
-
在全局管理命名空间,可以把命名挂在在window这个全局对象上,来实现命名空间的整合和通信。
-
按照约定的命名规范,将本变量注册到全局
-
大型项目中,变量对象会出现多层级的结构,如:trade.trade_namual.create,一层一层注册。
实现:
调用演示:
es6使用建议:
推荐let和const关键词。块级作用域使用let申明变量,只读常量使用const申明。
④ 模块化开发
php
命名空间
a.php
<?php
namespace A;
function common(int $a){
return $a+1;
}
const _VAR = 9999;
index.php
<?php
require('a.php');
const _VAR = 1;
function common(int $a){
return $a-1;
}
echo A\common(3); // 调用命名空间为A下的common方法
echo common(4);
echo _VAR;
echo A\_VAR; // 调用命名空间为A下的_VAR常量
执行效果:

本文探讨了在JavaScript中如何通过挂载到window全局对象来管理命名空间,以避免命名冲突,并介绍了遵循命名规范注册变量的方法。在大型项目中,采用多层级结构如trade.trade_namual.create进行组织。此外,虽然未详细展开,但提到了PHP相关的内容,暗示可能在PHP中也有类似策略处理命名冲突。
967

被折叠的 条评论
为什么被折叠?



