Zastanawiam się, jak zarządzane są zastrzeżone słowa kluczowe/funkcje JavaScript.Zarezerwowane słowa kluczowe javaScript
Przykład:
Według:
http://www.quackit.com/javascript/javascript_reserved_words.cfm
delete
jest zarezerwowanym kluczowe przez JavaScript.
Następnie należy rozważyć następujący fragment z jakiegoś kontekstu:
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;
}
};
Ten obiekt ma właściwość delete
, ale nazwa jest on zarezerwowany przez JavaScript więc powinien zawieść, prawda?
Jednak kiedy wykonać cookieManager.delete();
w webconsole
z FireFox
uzyskać następujące dane wyjściowe, co sugeruje, że działa prawidłowo:
[11:26:00.654] cookieManager.delete();
[11:26:00.656] cookieManager.delete() called
[11:26:00.657] true
Jeśli jednak uruchomić kod w JsLint
mówi
Problem at line 12 character 5: Expected an identifier and instead saw 'delete' (a reserved word).
delete: function (name) {
Sugerując, że jest to podejście szerokie, należy unikać takich sytuacji.
Więc kiedy wziąć pod uwagę zarezerwowane słowa kluczowe, tak jak w tym przykładzie, wydaje się, że działa tak, jak tego chcę (słowo kluczowe "usuń" znajduje się w kontekście obiektu cookieManager i dlatego nie powoduje konfliktów, dlatego może być używane), czy też powinienem stosować się do Biblii, która jest JsLint
i zmienić nazwę wszystkiego, co jest zastrzeżonym słowem kluczowym przez javascript? W tym kontekście mogłem łatwo zmienić nazwę .delete() na .remove().
Tak więc, aby wyjaśnić, ponieważ zasada produkcja '' IdentifierName' PropertyName' korzysta i nie 'Identifier', to dobrze używać 'delete' i tak dalej jako' PropertyName'? –
@Delan: Powiedziałbym tak. Nie oznacza to jednak, że przeglądarki stosują tę samą zasadę. –
Również, jeśli uruchomisz kod w '' trybie ścisłym' 'powinien on rzucić błąd – Raynos