JavaScript中的“黑话”

336 阅读3分钟

什么是“黑话”

黑话,本指旧时江湖帮会人物的暗语、暗号,往往见于小说,后指流行于某一特殊行业中,非局外人所能了解的语言。而本文涉及到的“黑话”,其实是一些利用语言的特征使用的一些不常见的奇淫技巧,JavaScript的语法是十分简单灵活的,在项目中建议大家遵从ESLint规范编写可维护性的代码,各路神仙们也应该进行自我约束,毕竟“黑话”也并不全是什么好的东西,如果很多话可以直接讲,何必拐弯抹角的去说呢?

一.  
!与!!

!为逻辑非操作符,可以应用于ECMAScript中的任何值,无论这个值是什么类型,它会被强制转化为一个布尔值变量,再对其值取反。

!!只是单纯的将操作数执行两次逻辑非,它能将任意类型的值转化为相应的布尔值,它包含的步骤为:

将一个值转化为布尔值;

将其取反;

再次取反。

二.
+

在变量值前使用+的本意是将变量转换为数字,在一个函数接受数字类型的参数时特别有用:

00001.

+'1' // 1

00002.

00003.

+'-1' // '-1

00004.

00005.

+[] // 0

00006.

00007.

+{} // NaN

00008.

根据观察,+a与a * 1结果类似。除此之外,使用+也可以作为立即执行函数:+function() {}(),等效于(function(){})()。

字符串与数字相加时会将数值默认转为字符串,因此有了一下将数字转为字符串的快捷方法:'' + 1。

三.

== 与 ===

==为相等运算符,操作符会先将左右两边的操作数强制转型,转换为相同的操作数,再进行相等性比较。

===为全等运算符,它除了在比较时不会将操作数强制转型,其余相等判断与==一致。

简单而言, ==用于判断值是否相等, ===判断值与类型是否都相等,因此使用全等运算符判断操作数会更准确

四.

3e9

科学计数法是一种数学术语,将一个数表示为a乘以10的n次方,如光速30万公里每秒,在计算中通常将米做单位,则记为:300000000m/s,而在JavaScript中我们可使用科学计数法 3e9表示。

在这里举几个科学计数法的示例:

00001.

1e5; // 100000

00002.

00003.

2e-4; // 0.0002

00004.

00005.

-3e3; // -3000

00006.

Number对象有toExponential(fractionDigits)方法以科学计数法返回该数值的字符串表示形式,参数fractionDigits可选,用于用来指定小数点后有几位数字,例如:(179000).toExponential(); // "1.79e+5"。

以下情况JavaScript会自动将数值转为科学计数法表示:

§

小数点前的数字多于21位。

§

§

小数点后的零多于5个。

§


五.

.5px

通常某些人习惯省略0.开头的数字,常见于数值计算、css属性中,比如0.5px可直接写为.5px,0.2 * 0.3可写为:.2 * .3