Bry*_*yro 2 javascript operators code-snippets
我正在查看其他人的代码,并试图弄清楚他们在做什么。有问题的代码段如下所示:
for(j in a)
for(i in a)
y=a[i]+-~j,b=a[j]
Run Code Online (Sandbox Code Playgroud)
我明白这y=a[i]部分,但有什么作用+-~j?
这是(有点?)波浪号 ( ~) 运算符的巧妙使用,但它只会导致混淆。的~(有效),增加了一个数量和翻转迹象。
~0 === -1
~1 === -2
~-1 === 0
等等。
将-标志翻转回原来的样子。
所以最终的结果-~j是j + 1
然后将其添加到a[i]并分配给y
这个故事的寓意:永远不要写这样的代码。
注意:~操作符有合法的用例,尤其是在.indexOf()函数中。如果您想检查是否在数组/字符串中找到了某些内容,而不是说:
if (arr.indexOf("foo") > -1) {...}, 你可以说
if (~arr.indexOf("foo")){...}. 这是因为如果未找到该值,indexOf()将返回 -1,当通过波浪号运算符时,将返回 0,这将强制为 false。所有其他值返回 0 到 n,当通过波浪号运算符时返回 -(1 到 n+1),该运算符强制为真。
| 归档时间: |
|
| 查看次数: |
1472 次 |
| 最近记录: |