在函数式语言中,函数可以在嵌套函数的参数括号内执行,javascript的等价物是受到Scheme的启发。
f(f(f(f)))
console.log( 1 + 1 )
//2
为什么javascript可以在.log
方法参数括号中执行加法?
var list1 = []
console.log(list1.push("a"))
//1
但它无法在.log
方法括号内执行push方法?为什么它会返回1?
答案 0 :(得分:5)
push
方法返回它修改的对象的新长度属性。
返回: 调用方法的对象的新长度属性。
答案 1 :(得分:5)
因为push
返回数组的大小:
push()方法将新项添加到数组的末尾,然后返回 新的长度。
它确实执行了推送功能,它只是没有返回您期望的内容。
JavaScript是written in only 10 days所以我们坚持做一些设计决策。令人惊讶的是,我们甚至可以获得与我们一样多的功能风格(因为营销人员需要一种类似Java的语言)。
JavaScript允许用户以功能方式编写,但可能存在一些障碍。
This quote很有意思:
幸运的是,Eich设法将一些好主意融入到语言中 尽管他被要求做什么。
对于push
返回数组length
或刚刚推送的内容,或整个数组引用等等,是否更好一点也不是很明确。
答案 2 :(得分:2)
您的.push方法正在执行,但您看到1,因为push返回数组的新长度。见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push