使用整数(1,0)而不是布尔值(true,false)来缩小JavaScript是否安全



当JavaScript在客户端使用时,它必须通过网络传输,这就是为什么我们通常会缩小代码,例如通过删除空白和缩短标识符(变量和函数名等(。

在JavaScript/EMMAScript中,许多函数都会接受boolean来触发某些行为。例如,DOMTokenList.toggle()EventTarget.addEventListener()。当调用此类函数时,分别使用整数10而不是布尔值truefalse将节省一些额外的字节。

然而,JavaScript有两个比较运算符,=====,而1 == true的计算结果为true,1 === true的计算结果则为false。再说一遍,也许标准规定内置函数在接受布尔值或类似值时必须能够处理整数简而言之,在内置函数的上下文中用整数替换布尔值安全吗

它取决于内置函数。对一些人来说,传递整数会产生与传递布尔值相同的结果,而对另一些人来说则不然。一般来说,是的,如果函数期望布尔值,它会尝试将任何值强制转换为布尔值,但可能也有例外。

然而,minifier通常不知道函数调用是对内置函数的调用,也不知道函数的签名是什么。第一个目标是正确(不引入错误(,而不是输出最小的bundle。

迷你程序使用的一个标准技巧是用!1替换false,用!0替换true,这一技巧始终是等效的。

最新更新