这是一系列关于JavaScript中语法的问题.这也是社区Wiki,因此邀请每个人参与维护此列表.
Stack Overflow不允许搜索特定字符.因此,在搜索运算符和其他语法标记时,很难找到许多关于运算符和其他语法标记的问题.这也使得关闭重复更加困难.以下列表是为了解决此问题.
主要思想是在Stack Overflow上链接现有问题,因此我们更容易引用它们,而不是复制ECMAScript规范中的内容.
此外,这是PHP符号引用的公然副本.我们需要一个JS.
请帮忙.编辑并添加指向其他运算符/语法参考的链接,或者如果您无法在特定语法上找到好的问题/答案,请添加此问题的答案并将其链接
我发现JQuery网站上的代码构造未知.经过一些格式化,它看起来像:
function (a,c) {
c==null && (c=a,a=null);
return arguments.length>0
? this.bind(b,a,c)
: this.trigger(b)
}
Run Code Online (Sandbox Code Playgroud)
该函数的第一行是什么意思?是任何技巧或标准JS代码构造?
这条线parent && (this.parent.next = this);是什么意思?它只是看起来像坐在那里,什么也不做,不是if声明或承诺或任何东西.这种编码风格有名称吗?
var Particle = function(i, parent)
{
this.next = null;
this.parent = parent;
parent && (this.parent.next = this);
this.img = new Image();
this.img.src = "http://www.dhteumeuleu.com/images/cloud_01.gif";
this.speed = speed / this.radius;
}
Run Code Online (Sandbox Code Playgroud)
它在我正在看的动画文件的多个地方.这是另一个例子..(!touch && document.setCapture) && document.setCapture();
this.down = function(e, touch)
{
e.preventDefault();
var pointer = touch ? e.touches[0] : e;
(!touch && document.setCapture) && document.setCapture();
this.pointer.x = pointer.clientX;
this.pointer.y = pointer.clientY;
this.pointer.isDown = true;
Run Code Online (Sandbox Code Playgroud) 我试图在调用函数之前将计时器从5秒减少到零,我可以成功地做到这一点,但是我还没有能够在倒计时时显示计时器值.而不是显示值,<div></div>从空格到"数字:0".我已经使用了两个setTimeout并且setInterval结果相同.
<script type="text/javascript">
for (i = 5; i > 0; i--) {
function countDown() {
setInterval(function () {
document.getElementById("displayDiv").innerHTML = "Number: " + i;
}, 1000);
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
我也试过用.value它代替.innerHTML没有帮助.
<input type="button" value="Count" onclick="countDown()" />
<div id="displayDiv" />
Run Code Online (Sandbox Code Playgroud)
这看起来应该很简单,但它让我难过.任何帮助表示赞赏
我正在读这篇文章:https://github.com/pburtchaell/redux-promise-middleware/blob/master/src/index.js
我知道它...被用作对象传播.我知道这!!用于将任何东西转换为具有相同真实性的布尔值.
但是知道这些,当它们组合在一起时它们意味着什么...!!?我无法理解最后一行:
{
...resolveAction,
...isAction(rejected) ? rejected : {
...!!rejected && { payload: rejected }
}
Run Code Online (Sandbox Code Playgroud)
...resolveAction只是传播键resolveAction....isAction(rejected) ?将检查是否rejected解决了一个动作然后将其传播.(也不确定这一个)rejected如果为true,则添加到object{...!!rejected && { payload: rejected } ????????????????怎么...!!连有效的语法?有两种选择:
如果它首先传播对象,则将!!应用于所有传播键
如果!!首先应用它,它是一个布尔值,它不能传播.
所以它没有任何意义,或者我错过了一些东西,因为给定代码,我假设它试图传播一个布尔值.
小片1:
if ( x ) {
foo();
}
Run Code Online (Sandbox Code Playgroud)
摘录2:
x ? foo() : 0;
Run Code Online (Sandbox Code Playgroud)
这两个片段有什么区别?
编辑:更正了语法错误.
更新:顺便说一句,似乎有一个更短的符号:
x && foo();
Run Code Online (Sandbox Code Playgroud) 有时用if语句替换语句是否有意义&&?我的意思是替换
if(a) {
b();
}
Run Code Online (Sandbox Code Playgroud)
通过
a && b();
Run Code Online (Sandbox Code Playgroud)
这些表格是否相同?在某些情况下是否推荐使用terser风格?
所以我正在阅读Airbnb的JS样式指南,我不明白OR运算符在下面的例子中做了什么.更具体地说,在Jedy构造options || (options = {});函数中,如果没有将参数传递给构造函数,那么基本上是创建一个空对象吗?因此,nameJedi构造函数的属性将设置为'no name'?
function Jedi(options) {
options || (options = {});
this.name = options.name || 'no name';
}
Jedi.prototype.getName = function getName() {
return this.name;
};
Jedi.prototype.toString = function toString() {
return 'Jedi - ' + this.getName();
};
Run Code Online (Sandbox Code Playgroud)
PS.似乎有很多简单的方法用JS做事.是否有任何好的资源或文章解释这些是什么以及什么时候最好使用它们?