オブジェクト: obj[key]はobj[key-string]ではないのはなぜですか? #1307
-
|
URL : https://github.com/asciidwango/js-primer/blob/master/source/basic/object/README.md 最後の1行は |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment
-
|
const key = "key-string";
// Computed Propertyで`key`の評価結果 "key-string" をプロパティ名に利用
const obj = {
[key]: "value"
};
console.log(obj[key-string]); // => Uncaught ReferenceError: string is not defined元のサンプルコードはComputed property namesを使って、 そのため、最後の行である console.log(obj[key]); // => "value"は console.log(obj["key-string"]); // => "value"と書いても結果は同じになります。 ブラケット記法([])内に書いた式は評価して、その結果をプロパティ名に利用できるからですね。 次のように書くと、違う結果になります。 console.log(obj[key-string]);これは、JavaScriptの変数名には 分かりやすく書くと、次のように書いた場合と同じです。 console.log(obj[key - string]);このときに |
Beta Was this translation helpful? Give feedback.
key-stringとして実行してみるとわかると思いますが、次のようにエラーとなります。元のサンプルコードはComputed property namesを使って、
objオブジェクトの"key-string"プロパティ名に対して"value"という値を入れて、その
objオブジェクトの"key-string"プロパティの値をコンソールに出力するという例ですね。そのため、最後の行である
は
と書いても結果は同じになります。
ブラケット記法([])内に書いた式は評価して、その結果をプロパティ名に利用できるからですね。
そのため、変数
keyの評価結果である"key-string"をプロパティ名として指定しています。次のように書くと、違う結果になります。
これは、JavaScriptの変数名には
-は使えないため、key-stringは 変数k…