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常量
执行效果:
