翼度科技»论坛 编程开发 JavaScript 查看内容

JavaScript 自执行函数防止冲突全局作用域变量 - 在线客服源码实现弹窗效果

3

主题

3

帖子

9

积分

新手上路

Rank: 1

积分
9
当我在实现在线客服源码弹窗效果JavaScript SDK时,对外公开的SDK代码就是使用的自执行函数的形式。
使用自执行函数来实现 JavaScript SDK 有以下好处:

  • 封装代码:自执行函数可以将你的 JavaScript 代码封装起来,从而避免在全局作用域中定义变量,防止变量名称冲突。
  • 提供 API:自执行函数可以提供 API,方便调用者使用。例如,你可以在自执行函数中定义一些方法,然后将这些方法暴露给调用者使用。
  • 控制变量作用域:自执行函数可以控制变量的作用域,从而避免在全局作用域中定义变量。这样,你就可以在函数内部定义局部变量,避免对全局变量造成影响

 
自执行函数(IIFE)是指在定义完成后立即执行的函数。

自执行函数的语法形式如下:
  1. (function() {
  2.   // 函数体
  3. })();
复制代码
或者:
  1. (function() {
  2.   // 函数体
  3. }());
复制代码
自执行函数可以用来封装你的 JavaScript 代码,避免在全局作用域中定义变量,从而防止变量名称冲突。
例如,你可以使用自执行函数来封装你的 JavaScript 代码,并在函数中定义局部变量。
例如:
  1. (function() {
  2.   // 在这里定义局部变量
  3.   const myLocalVariable = 'hello';
  4.   // 使用局部变量
  5.   console.log(myLocalVariable);
  6. })();
复制代码
这样,你就可以在自执行函数中定义局部变量,并避免在全局作用域中定义变量了。
自执行函数还可以传递参数,例如:
  1. (function(param1, param2) {
  2.   // 在这里使用函数参数
  3.   console.log(param1, param2);
  4. })('hello', 'world');
复制代码
这样,你就可以在自执行函数中传递参数了。
 
如果传递的参数是window

如果在自执行函数中传递 window 对象,并将一个属性赋值给 window 对象,则该属性将成为全局变量。
例如,你可以使用如下代码来定义一个全局变量:
  1. (function(global) {
  2.   global.myGlobalVariable = 'hello';
  3. })(window);
复制代码
这样,你就可以在全局作用域中访问 myGlobalVariable 变量了。
 
自执行函数还有另外一种写法,即 !function。
  1. !function() {
  2.   // 函数体
  3. }();
复制代码
这种写法与上述自执行函数的写法类似,但是在函数定义前使用了一个感叹号(!)。
这种写法的原理是,在 JavaScript 中,感叹号(!)是布尔取反运算符,可以将布尔值取反。例如:
  1. console.log(!true); // 输出 false
  2. console.log(!false); // 输出 true
复制代码
因此,使用感叹号(!)来定义自执行函数,相当于将函数定义转换为布尔值,然后对其取反,最后执行取反后的函数。
 
唯一在线客服系统
https://gofly.v1kf.com
 
  开源地址:唯一客服(开源学习版)   官网地址:唯一客服官网
来源:https://www.cnblogs.com/taoshihan/p/17026405.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具