我最近2 == [2]在JavaScript中发现了.事实证明,这个怪癖有几个有趣的后果:
var a = [0, 1, 2, 3];
a[[2]] === a[2]; // this is true
Run Code Online (Sandbox Code Playgroud)
同样,以下工作:
var a = { "abc" : 1 };
a[["abc"]] === a["abc"]; // this is also true
Run Code Online (Sandbox Code Playgroud)
更奇怪的是,这也有效:
[[[[[[[2]]]]]]] == 2; // this is true too! WTF?
Run Code Online (Sandbox Code Playgroud)
这些行为在所有浏览器中都是一致的
知道为什么这是一个语言功能吗?
以下是这个"功能"的更为疯狂的后果:
[0] == false // true
if ([0]) { /* executes */ } // [0] is both true and false!
var a = [0];
a == a // true
a == !a …Run Code Online (Sandbox Code Playgroud) 反正有没有让Python中的元组操作像这样工作:
>>> a = (1,2,3)
>>> b = (3,2,1)
>>> a + b
(4,4,4)
Run Code Online (Sandbox Code Playgroud)
代替:
>>> a = (1,2,3)
>>> b = (3,2,1)
>>> a + b
(1,2,3,3,2,1)
Run Code Online (Sandbox Code Playgroud)
我知道它的工作原理是这样的,因为这些__add__和__mul__方法的定义是这样的.那么唯一的方法就是重新定义它们吗?
这是一系列关于JavaScript中语法的问题.这也是社区Wiki,因此邀请每个人参与维护此列表.
Stack Overflow不允许搜索特定字符.因此,在搜索运算符和其他语法标记时,很难找到许多关于运算符和其他语法标记的问题.这也使得关闭重复更加困难.以下列表是为了解决此问题.
主要思想是在Stack Overflow上链接现有问题,因此我们更容易引用它们,而不是复制ECMAScript规范中的内容.
此外,这是PHP符号引用的公然副本.我们需要一个JS.
请帮忙.编辑并添加指向其他运算符/语法参考的链接,或者如果您无法在特定语法上找到好的问题/答案,请添加此问题的答案并将其链接
是否可以在JavaScript中的类型实例之间定义自定义运算符?
例如,假设我有自定义矢量类,是否可以使用
vect1 == vect2
Run Code Online (Sandbox Code Playgroud)
检查是否相等,而底层代码是这样的?
operator ==(a, b) {
return a.x == b.x && a.y == b.y && a.z == b.z;
}
Run Code Online (Sandbox Code Playgroud)
(当然这是无稽之谈.)
我从面试中得到了这个问题,
[1,2] + [4,5,6][1]
Run Code Online (Sandbox Code Playgroud)
JavaScript给出答案1,25.
怎么回事?请清楚解释一下.
我只是想知道是否有一种特殊的pythonic方式添加两个元组元素?
到目前为止(a和b是元组),我有
map(sum, zip(a, b))
Run Code Online (Sandbox Code Playgroud)
我的预期输出是:
(a[0] + b[0], a[1] + b[1], ...)
Run Code Online (Sandbox Code Playgroud)
并且可能的重量是给予0.5重量和b 0.5重量,或者等等.(我试图加权平均值).
哪个工作正常,但说我想增加一个权重,我不太确定我会怎么做.
谢谢
为什么空数组加假返回字符串“假”?
> [] + false
> "false"
Run Code Online (Sandbox Code Playgroud)
空数组是假的,对吧?
那么假+假=假?不?
我正在解决扁平化数组的问题.我遇到了一些非常奇怪的东西,似乎无法在网上找到答案.
为什么
[] + [1,2] = '1,2'
Run Code Online (Sandbox Code Playgroud)
我似乎无法理解为什么在填充的数组中添加一个空数组会产生一个包含填充数组内容的字符串.
背后会发生什么导致这种情况?
我的代码示例:
arr = [1, [2], [3, 4]];
arr.reduce(flatten, []); // [1, 2, 3, 4]
function flatten(a, b) {
return a.concat(b);
}
Run Code Online (Sandbox Code Playgroud)
据我所知,reduce会将'[]'设置为'初始值',因此对于原始数组中的每个元素,它会将它与一个空数组连接,从而"展平"数组.
我试图使用 + 符号连接两个数组,但我得到的结果是:第一个数组的最后一个元素连接到第二个数组的第一个元素为什么会发生这种情况是我尝试过的任何具体原因
var a=[1,2,3];
var b=[5,7,8];
console.log(a+b);
Run Code Online (Sandbox Code Playgroud)
我得到的结果是 1,2,35,7,8