为什么javascript不能在方法里面执行方法?

时间:2016-06-22 19:24:59

标签: javascript methods functional-programming

在函数式语言中,函数可以在嵌套函数的参数括号内执行,javascript的等价物是受到Scheme的启发。

  
    

f(f(f(f)))

  
console.log( 1 + 1 )
//2

为什么javascript可以在.log方法参数括号中执行加法?

var list1 = []
console.log(list1.push("a"))
//1

但它无法在.log方法括号内执行push方法?为什么它会返回1?

3 个答案:

答案 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