Javascript: array shift 和 reverse 方法不能在同一行代码中调用吗?
Javascript: Can array shift and reverse methods not be called in the same line of code?
javascript中的这一行:
myarray.reverse().shift().reverse()
似乎与三个单独的行的工作方式不同
myarray.reverse();
myarray.shift();
myarray.reverse();
这是预期的吗?或者这是一个错误?
我知道我可以将其替换为
myarray.pop();
但这不是重点。我想了解预期的行为是什么。
我做了一个小 html 来演示:
<html> <body>
<button onclick="myFunction1()">Func1</button>
<button onclick="myFunction2()">Func2</button>
<p id="demo"></p>
<script>
var fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = fruits;
function myFunction1() {
fruits.reverse();
fruits.shift();
fruits.reverse();
document.getElementById("demo").innerHTML = fruits;
}
function myFunction2() {
fruits.reverse().shift().reverse();
document.getElementById("demo").innerHTML = fruits;
}
</script>
</body> </html>
我希望 Func1 和 Func2 的行为相同。但是 Func2 按钮没有按预期工作,尽管 Func1 可以。
您不能像 JavaScript 中那样只是链接方法调用。后面的调用将在前一个调用的 return 值上调用,而不是在原始对象上调用。
myArray.shift()
returns 是数组的(以前的)第一个元素。它不 return(原始或修改后的)数组(reverse
在就地更新后 return 数组)。
所以myArray.shift().reverse()
反转第一个元素。
而 myArray.shift(); myArray.reverse();
首先删除第一个元素,然后反转数组的其余部分。
javascript中的这一行:
myarray.reverse().shift().reverse()
似乎与三个单独的行的工作方式不同
myarray.reverse();
myarray.shift();
myarray.reverse();
这是预期的吗?或者这是一个错误? 我知道我可以将其替换为
myarray.pop();
但这不是重点。我想了解预期的行为是什么。
我做了一个小 html 来演示:
<html> <body>
<button onclick="myFunction1()">Func1</button>
<button onclick="myFunction2()">Func2</button>
<p id="demo"></p>
<script>
var fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = fruits;
function myFunction1() {
fruits.reverse();
fruits.shift();
fruits.reverse();
document.getElementById("demo").innerHTML = fruits;
}
function myFunction2() {
fruits.reverse().shift().reverse();
document.getElementById("demo").innerHTML = fruits;
}
</script>
</body> </html>
我希望 Func1 和 Func2 的行为相同。但是 Func2 按钮没有按预期工作,尽管 Func1 可以。
您不能像 JavaScript 中那样只是链接方法调用。后面的调用将在前一个调用的 return 值上调用,而不是在原始对象上调用。
myArray.shift()
returns 是数组的(以前的)第一个元素。它不 return(原始或修改后的)数组(reverse
在就地更新后 return 数组)。
所以myArray.shift().reverse()
反转第一个元素。
而 myArray.shift(); myArray.reverse();
首先删除第一个元素,然后反转数组的其余部分。