2016-06-22 3 views
-6

В функциональных языках функции могут выполнять внутри аргументов скобки вложенных функций, что эквивалентно для javascript, который должен быть вдохновлен Схемой.Почему javascript не может выполнять методы внутри методов?

е (е (е (е)))

console.log(1 + 1) 
//2 

как прийти Javascript может выполнить добавление внутри .log аргумента метода скобок?

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

пока он не может выполнить метод нажимной внутри .log метода скобки? и почему он возвращает 1?

+2

Вы просмотрели документацию для 'Array.prototype.push'? – gcampbell

+2

Ваш главный вопрос для меня не имеет смысла. Он возвращает 1, потому что push возвращает длину массива, в который вы вставили элемент. Он нажимает элемент на массив, но когда вы регистрируете возврат push, а не list1, вы видите только 1. Если вы запишете 'console.log (list1.push (« a »), list1)' вы увидите, что ваш массив имеет 'a' в нем – eithed

ответ

5

, потому что push возвращает размер массива: метод

Толчок() добавляет новые элементы в конец массива и возвращает новая длина.

Он выполняет функцию push, он просто не возвращает то, что вы ожидали.

JavaScript был written in only 10 days, поэтому мы застряли с некоторыми дизайнерскими решениями. Удивительно, что мы даже обладаем таким же функциональным стилем, как и мы (с тех пор, как люди искали язык, похожий на Java).

JavaScript позволяет писать функционально, но могут быть некоторые контрольно-пропускные пункты.

This quote интересно:

К счастью Эйч удалось проникнуть некоторые большие идеи на язык , несмотря на то, что ему было предложено сделать.

Это также не совсем четкое, будет ли это лучше для push вернуть массив length или то, что вы только толкание или все ссылки на массив ... и т.д..

5

Метод push возвращает свойство новой длины объекта, который он модифицировал.

Возврат: Новое свойство length объекта, на котором был вызван метод.

Смежные вопросы