Rumah  >  Artikel  >  hujung hadapan web  >  在 js中function前面加!方面的问题,代码附上

在 js中function前面加!方面的问题,代码附上

亚连
亚连asal
2018-05-18 10:18:221292semak imbas

下面是我给大家整理的有关 js中function前面加!方面的问题,有兴趣的同学可以去看看。

我们都知道,函数的声明方式有这两种

function fnA(){alert('msg');}//声明式定义函数
var fnB = function(){alert('msg');}//函数赋值表达式定义函数12

函数的调用方式通常是FunctionName()

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

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

定义函数的调用方式应该是 msg(); 那为什么将函数体部分用()包裹起来就可以了呢?

原来,使用括号包裹定义函数体,解析器将会以函数表达式的方式去调用定义函数。也就是说,任何能将函数变成一个函数表达式的作法,都可以使解析器正确的调用定义函数。而 ! 就是其中一个,而 + - || ~都有这样的功能。

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

// 这么写会报错,因为这是一个函数定义:
function() {}()
// 常见的(多了一对括号),调用匿名函数:
(function() {})()
// 但在前面加上一个布尔运算符(只多了一个感叹号),就是表达式了,将执行后面的代码,也就合法实现调用
!function() {}()

上面是我整理给大家的在 js中function前面加!方面的问题,希望今后会对大家有帮助。

相关文章:

详细讲解JS和app交互的方式(代码附上 )

详细讲解Js apply()使用(含有代码)

简单易懂,javascript自学学习笔记

Atas ialah kandungan terperinci 在 js中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