Me pregunto cómo se administran las palabras clave/funciones reservadas de JavaScript.javaScript palabras clave reservadas
Ejemplo:
Según:
http://www.quackit.com/javascript/javascript_reserved_words.cfm
delete
es una palabra clave reservada por JavaScript.
Entonces considere el siguiente fragmento de un poco de contexto:
var cookieManager = {
get: function (name) {
// function contents ...
console.log("cookieManager.get() called");
return true;
},
set: function (name, value, days) {
// function contents ...
console.log("cookieManager.set() called");
return true;
},
delete: function (name) {
// function contents ...
console.log("cookieManager.delete() called");
return true;
}
};
Este objeto tiene una propiedad delete
, sin embargo, el nombre de la misma está reservada JavaScript por lo que debe fallar, ¿verdad?
Sin embargo, cuando ejecuto cookieManager.delete();
en el webconsole
de FireFox
consigo la salida siguiente, lo que sugiere que funciona bien:
[11:26:00.654] cookieManager.delete();
[11:26:00.656] cookieManager.delete() called
[11:26:00.657] true
Sin embargo, si se ejecuta el código en JsLint
dice
Problem at line 12 character 5: Expected an identifier and instead saw 'delete' (a reserved word).
delete: function (name) {
Sugiere que este es un gran no no enfoque y debe evitarse.
Entonces, cuando debería tener en cuenta palabras clave reservadas, como en este ejemplo parece funcionar como yo quiero (la palabra clave delete está en el contexto del objeto cookieManager y no causa conflictos, por lo tanto puede ser utilizado) o debería atenerme a la Biblia que es JsLint
y renombrar cualquier cosa que sea una palabra reservada por javascript? En este contexto, podría cambiar fácilmente el nombre de .delete() por .remove().
Por lo tanto, para aclarar, porque la regla de producción de '' PropertyName' utiliza IdentifierName' y no 'Identifier', es bien para utilizar 'eliminar' y así sucesivamente como un' PropertyName'? –
@Delan: Yo diría que sí. Pero eso no significa que los navegadores sigan la misma regla. –
También si ejecuta el código en '" modo estricto "' debería arrojar un error – Raynos