当JavaScript在客户端使用时,它必须通过网络传输,这就是为什么我们通常会缩小代码,例如通过删除空白和缩短标识符(变量和函数名等(。
在JavaScript/EMMAScript中,许多函数都会接受boolean
来触发某些行为。例如,DOMTokenList.toggle()
或EventTarget.addEventListener()
。当调用此类函数时,分别使用整数1
和0
而不是布尔值true
和false
将节省一些额外的字节。
然而,JavaScript有两个比较运算符,==
和===
,而1 == true
的计算结果为true,1 === true
的计算结果则为false。再说一遍,也许标准规定内置函数在接受布尔值或类似值时必须能够处理整数简而言之,在内置函数的上下文中用整数替换布尔值安全吗
它取决于内置函数。对一些人来说,传递整数会产生与传递布尔值相同的结果,而对另一些人来说则不然。一般来说,是的,如果函数期望布尔值,它会尝试将任何值强制转换为布尔值,但可能也有例外。
然而,minifier通常不知道函数调用是对内置函数的调用,也不知道函数的签名是什么。第一个目标是正确(不引入错误(,而不是输出最小的bundle。
迷你程序使用的一个标准技巧是用!1
替换false
,用!0
替换true
,这一技巧始终是等效的。