我在一个jQuery文件中找到了这个:
xxx.css({ 'float' : 'right' });
Run Code Online (Sandbox Code Playgroud)
花括号做什么?
我对+ =符号有点困惑.它是如何工作的?
1 += 2 // 等于 ?
还有这个
var data = [1,2,3,4,5];
var sum = 0;
data.forEach(function(value) {
sum += value;
});
sum = ?
Run Code Online (Sandbox Code Playgroud)我!!~在阅读时在代码中发现了一个奇怪的内容:https://github.com/LearnBoost/mongoose/blob/master/lib/document.js#L678
Document.prototype.isModified = function (path) {
return !!~this.modifiedPaths.indexOf(path);
};
Run Code Online (Sandbox Code Playgroud)
我读过那是什么!! (不是)JavaScript中的运算符?以及如何:〜运算符?; 为什么作者!!~在这里使用?
我试过了:
!!~1 // -> true
!!~0 // -> true
!!~-1 // -> false
!!~-2 // -> true
Run Code Online (Sandbox Code Playgroud)
似乎它只是false在数字的时候-1.这样对吗?为什么不核对一下电话号码是不是-1还是>=0?
javascript operators bitwise-operators mongoose comparison-operators
我看到其他地方说,
x && foo();
等于
if(x){
foo();
}
Run Code Online (Sandbox Code Playgroud)
我测试了它,他们真的做了同样的事情.
但为什么?到底是x && foo()什么?
当我将undefined和null与Boolean false进行比较时,该语句返回false:
undefined == false;
null == false;
Run Code Online (Sandbox Code Playgroud)
它返回false.为什么?
我在JS项目中找到了以下代码:
var a = new Array();
a[0] = 0;
for (var b = 0; b < 10; b++) {
a[0] |= b;
}
Run Code Online (Sandbox Code Playgroud)
|=for循环体内有什么作用?
代码示例是可疑的,但V8 已经在这里提供了一个改进性能的示例.
更新的示例
上面的例子相当于var a = [15];大多数意图和目的.|=操作员的一个更现实的例子是在单个变量中设置二进制标志,例如在权限对象上:
//Set up permission masks
var PERMISSION_1_MASK = parseInt('0001',2);
var PERMISSION_2_MASK = parseInt('0010',2);
..
//Set up permissions
userPermissions = 0;
userPermissions |= hasPermissionOne && PERMISSION_1_MASK;
userPermissions |= hasPermissionTwo && PERMISSION_2_MASK;
..
//Use permissions
if(userPermissions & PERMISSION_1_MASK){
..//Do stuff only allowed by permission 1 …Run Code Online (Sandbox Code Playgroud) ECMAScript 6应该带来生成器函数和迭代器.生成器函数(具有function*语法)返回迭代器.迭代器有一个next方法,当重复调用时,它执行生成器函数的主体,在每个yield操作员处重复暂停和恢复执行.
生成器上的ECMAScript 6 wiki还引入了"委托产量" yield*运算符,如下所示:
该
yield*运营商委托给另一发电机.这为组合生成器提供了方便的机制.
"委托给另一台发电机"是什么意思?我怎样才能yield*"方便地组合发电机"?
[您可以使用--harmony-generators标志在Node v0.11.3中使用生成器.]
在查看Twitter Bootstrap Javascript中编写的一些代码时,看起来他们正在调用立即调用的匿名函数,如下所示:
!function( $ ) {
...
}(window.jQuery || window.ender);
Run Code Online (Sandbox Code Playgroud)
我传统上看到过这样的事情:
(function($) {
...
})(window.jQuery || window.ender);
Run Code Online (Sandbox Code Playgroud)
第一种方式似乎有点hacky,我不确定这样做是否有任何好处或理由,而不是第二种方式? 请注意,我理解它是如何工作的,我希望了解为什么他们选择这种方式来做到这一点.
从JavaScript类型的jQuery文档中可以看到这段代码描述转换为布尔值时字符串的行为(该主题与此问题无关,但它只是我找到代码的地方):
!"" // true
!"hello" // false
!"true" // false
!new Boolean(false) // false
Run Code Online (Sandbox Code Playgroud)
我得到前三个例子,但我没有得到最后一个例子,因为:
new Boolean(false) == false //true
!false // true
Run Code Online (Sandbox Code Playgroud)
所以我假设:
!new Boolean(false) // true
Run Code Online (Sandbox Code Playgroud)
但反而:
!new Boolean(false) // false, mind = blown
Run Code Online (Sandbox Code Playgroud)
这是什么我甚至不...
是因为:
new Boolean(false) === false // false
Run Code Online (Sandbox Code Playgroud)
如果是这样,它的用途是什么?
javascript ×10
and-operator ×1
conditional ×1
css ×1
ecmascript-6 ×1
iife ×1
jquery ×1
mongoose ×1
operators ×1