앞 절에서 우리는 square()라는 함수를 정의했다. 대부분의 경우 자바스크립트 프로그램에서 함수를 정의할 때 이 함수 정의 문법을 사용한다. 그러나 자바스크립트는 함수를 정의하는 함수 리터럴 문법도 제공한다. 함수 리터럴은 function 키워드, 함수 이름(생략할 수 있다), 괄호로 둘러싸인 함수 전달인자 목록, 마지막으로 중괄호로 구성된다. 즉, 함수 리터럴은 함수 이름을 명시하지 않는다는 것을 제외하고는 함수 정의와 모양이 동일하다. 함수 정의와 함수 리터럴 간에 큰 차이점은 함수 리터럴은 자바스크립트 표현식 내에 나타날 수 있다는 점이다. 따라서 다음과 같이 함수 정의 문법으로 square()를 정의하는 대신,
함수 리터럴을 사용할 수 있다.
이름 없는 함수를 프로그램 내에 리터럴 형태로 포함시킬 수 있게 한 최초의 언어인 Lisp 프로그램 언어를 기리는 의미에서 이러한 방식으로 정의된 함수를 람다함수(lambda function)라고 부른다. 지금은 프로그램에서 함수 리터럴을 사용할만한 명백한 이유를 떠올리기 힘들 테지만, 고급 스크립트를 작성할 때 함수 리터럴이 꽤나 편리하고 유용하게 사용될 수 있다는 것을 나중에 보여 주겠다.
함수를 정의하는 방법이 하나 더 있다. 그것은 전달인자 목록과 함수 몸체를 분자열 형태로 Function() 생성자에 전달하는 것이다. 예를 들어,
이러한 형태로 함수를 정의하는 방법은 그리 유용하지 않다. 함수 몸체를 문자열로 표현하는 것이 불편하기도 하고 많은 수의 자바스크립트 구현에서 이러한 식으로 정의된 함수는 다른 두 방법으로 정의된 함수보다 비효율적으로 작동한다.