Skip to content

オブジェクト: obj[key]はobj[key-string]ではないのはなぜですか? #1307

Answered by azu
annaPanda8170 asked this question in 質問
Discussion options

You must be logged in to vote

key-stringとして実行してみるとわかると思いますが、次のようにエラーとなります。

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を使って、
objオブジェクトの"key-string"プロパティ名に対して "value" という値を入れて、
そのobjオブジェクトの"key-string"プロパティの値をコンソールに出力するという例ですね。

そのため、最後の行である

console.log(obj[key]); // => "value"

console.log(obj["key-string"]); // => "value"

と書いても結果は同じになります。

ブラケット記法([])内に書いた式は評価して、その結果をプロパティ名に利用できるからですね。
そのため、変数 key の評価結果である "key-string" をプロパティ名として指定しています。


次のように書くと、違う結果になります。

console.log(obj[key-string]);

これは、JavaScriptの変数名には-は使えないため、
key-string は 変数k…

Replies: 1 comment

Comment options

You must be logged in to vote
0 replies
Answer selected by azu
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
質問
Labels
None yet
2 participants
Converted from issue

This discussion was converted from issue #1271 on May 03, 2021 10:48.