Rumah >hujung hadapan web >tutorial js >分析function前加运算符实现立即执行函数

分析function前加运算符实现立即执行函数

高洛峰
高洛峰asal
2017-03-12 13:09:141361semak imbas

我们知道函数的调用方式通常是FunctionName()

但如果我们尝试为一个“定义函数”末尾加上(),解析器是无法理解的。

function msg(){
  alert('message');
  }();//解析器是无法理解的

定义函数的调用方式应该是 msg()。

想让函数立即执行可以将函数体部分用()包裹起来。

这是因为,使用括号包裹定义函数体,解析器将会以函数表达式的方式去调用定义函数。也就是说,任何能将函数变成一个函数表达式的作法,都可以使解析器正确的调用定义函数。如下:

// 这么写会报错,因为这是一个函数定义:
function() {}()

// 常见的(多了一对括号),调用匿名函数:
(function() {})()

// 但在前面加上一个布尔运算符(只多了一个感叹号),就是表达式了,将执行后面的代码,也就合法实现调用
!function() {}()

! 只是其中一个运算符,而 + - || ~都有这样的功能。

用 ! 可能更多的是一个习惯问题,不同的运算符,性能是不同的。

效果等同于以下常用的两种立即执行方式:

(function() {})();
  // or  
(function() {}());

谢谢大家的阅读。

Atas ialah kandungan terperinci 分析function前加运算符实现立即执行函数. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn