相关疑难解决方法(0)

来自元组的JavaScript变量赋值

在Python 2和Python 3等其他语言中,您可以为元组变量定义和赋值,并检索它们的值,如下所示:

tuple = ("Bob", 24)
name, age = tuple
print(name)           #name evaluates to Bob
print(age)            #age evaluates to 24
Run Code Online (Sandbox Code Playgroud)

JavaScript中有类似的东西吗?或者我只需要用数组的丑陋方式来做:

tuple = ["Bob", 24]
name = tuple[0]       //name Evaluates to Bob
age = tuple[1]        //age Evaluates to 24
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来模拟JavaScript 5中的Python元组?

javascript tuples destructuring

87
推荐指数
7
解决办法
10万
查看次数

Javascript函数指针赋值

考虑这个javascript代码:

var bar = function () { alert("A"); }
var foo = bar;
bar = function () { alert("B"); };
foo();
Run Code Online (Sandbox Code Playgroud)

运行此代码时,我得到"A".这种行为是javascript规范的一部分吗?我可以依赖它吗?

javascript function-pointers

47
推荐指数
5
解决办法
6万
查看次数

JavaScript中的数字是不可变的吗?

可能重复:
javascript数字 - 不可变

我读过Douglas Crockford的书:JavaScript:the Good Parts.它说JavaScript中的数字是不可变的.但JavaScript中的数字是按值复制的,我们可以使用operator ++来更改值.那么为什么说这是不可改变的呢?而且,如果它是不可变的,为什么数字是按值复制的?

javascript

7
推荐指数
1
解决办法
2651
查看次数

更改数组项目的最佳方法是什么?

在Redux中更改商店数组元素的最佳方法是什么?我有这3个工作解决方案.哪个是最好的?我认为前两种解决方案正在改变国家.这是真的吗?如果您有更好的解决方案,我会很感激.

在这个例子中我有一个订单列表,我想增加列表中一个订单的数量.我将此订单索引作为orderIndex传递.

第一种方式:

let order = state[action.orderIndex];
order.quantity++;
return Object.assign([],order);
Run Code Online (Sandbox Code Playgroud)

第二种方式:

let order= Object.assign([],state);
order[action.orderIndex].quantity++;
return Object.assign([],order);
Run Code Online (Sandbox Code Playgroud)

第三种方式:

return Object.assign([],state.map(
            (order,index) => (index==action.orderIndex) ? {...order,quantity:order.quantity+1} : order)
        );
Run Code Online (Sandbox Code Playgroud)

我有另一个解决方案,但它返回一个对象,我不知道如何在此解决方案中返回一个数组.:

            return {...state,[action.orderIndex]:{...state[action.orderIndex],quantity:state[action.orderIndex].quantity+1}};
Run Code Online (Sandbox Code Playgroud)

immutability redux

6
推荐指数
2
解决办法
6390
查看次数

为什么数字在 Javascript 中是不可变的?

我已经阅读了这里的问题和答案:

javascript 数字 - 不可变

但是对我来说为什么数字(原始类型)是不可变的还不够清楚?仅仅因为他们创建了一个新的引用但没有覆盖该值?

如果在每个assignemt上创建一个新的引用

var x = 5;
x = 1;
Run Code Online (Sandbox Code Playgroud)

在下面的循环中我们会有 100 次新引用吗?

while (x < 101)
{
    x++;
}
Run Code Online (Sandbox Code Playgroud)

这样有效率吗?我想我没有正确看待。

javascript immutability

6
推荐指数
1
解决办法
1165
查看次数

Javascript编译器行为 - 对于空数组和零数组的数组加倍是.. ONE

我的问题可能已经回答了,但我找不到搜索引擎中的谷歌或者bing不喜欢'+'(加号)登录搜索请求.

无论如何,为什么这是零

+[[]][0] // = 0
Run Code Online (Sandbox Code Playgroud)

这是一个

++[[]][0] // = 1
Run Code Online (Sandbox Code Playgroud)

UPD: Michael Berkowski有一个很好的答案,但我偷了不明白一件事

如果[[]][0]计算结果为空数组,那么,为什么++[]ReferenceError: Invalid left-hand side expression in prefix operation

UPD2: 现在我明白了......似乎我试图在控制台中键入++ 0并获得错误,但我应该使用var a = 0; ++一个

javascript

3
推荐指数
1
解决办法
302
查看次数