La mayoría de los lenguajes de programación de tipo dinámico no tienen tienen vars explícitos en la lista de argumentos. El propósito de la palabra clave var es diferenciar entre "Estoy fijando una variable existente" y "Estoy creando una nueva variable", como en
var x = 17; //new variable
x = 18; //old variable
(Sólo algunos idiomas, como Python, voy con la var completamente pero hay algunos problemas con, por ejemplo, los cierres y los errores tipográficos accidentales por lo var aún está muy extendida)
pero en una lista de argumentos no se puede asignar a las variables existentes por lo que la ambigüedad anterior no necesita ser resuelto. Por lo tanto, una declaración var en la lista de argumentos no sería nada más que un texto repetitivo redundante. (Y repetitivo redundante es malo - ver COBOL en exibit A)
Usted probablemente está recibiendo su idea de C o Java, pero en sus declaraciones de tipo caso doblar como declaraciones de variables y de la costra en las listas de argumentos es para los tipos y no para las declaraciones.
Incluso podemos salirse con la suya con una lista de argumentos "sin tipo, varless" también en algunos idiomas. En Haskell, por ejemplo, los tipos pueden inferirse, por lo que no es necesario que los escriba en la lista de argumentos. Debido a esto la lista de argumentos se compone de sólo los nombres de las variables y, como en el caso de Javascript que no es necesario poner el ajeno "vamos" (equivalente de Haskell a "var") allí:
f a b = --arguments are still variables,
-- but we don't need "let" or type definitions
let n = a + b in --extra variables still need to be declared with "let"
n + 17
¿Por qué quiere la palabra clave allí? 'var' declara variables, los parámetros son (un poco) diferentes. No tiene sentido la palabra clave allí, no agrega ningún valor. –
¿No es esa una razón lo suficientemente buena? ¿Qué información adicional te dará var?además, guardas 4 caracteres cada vez que declaras una función var que puedes poner haciendo que el nombre de la variable sea más largo para mayor claridad :). – Asken
Porque ECMA-262 dice que los parámetros formales, como las variables declaradas, se convierten en propiedades nombradas del objeto variable local antes de que se ejecute cualquier código. Entonces un parámetro formal es más o menos declarado por defecto. – RobG