变量、函数名命名冲突解决方案

廉价感情. 提交于 2019-12-09 18:04:52

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常量

 

执行效果:
 
 
 
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!