2

从 Chrome 控制台:

> myParam = {"test": "test value"}    
> myFunc = function(x) { myParam[x] = x; }

> myFunc("func value")
> myParam
{test: "test value", func value: "func value"} // (a) question

> myFunc(2)
> myParam
{2: 2, test: "test value", func value: "func value"}

> myFunc()
> myParam
{2: 2, test: "test value", func value: "func value", undefined: undefined} // (b) question

这是目前最新版本的 Chrome (69.0.3497.100) 请解释如何用 JavaScript在此处输入图像描述

a) 可以创建一个包含空格的对象成员(“myParam.func value”)
b) 可以创建一个“未定义的”对象成员(“myParam.undefined”)
c) 对于 (b) 情况,是“未定义”真的是“未定义”还是只是一个字符串“未定义”?


PS。感谢@ryanpcmcquen 的评论,以下PS 在此处输入图像描述


聚苯乙烯。如果字符串没有像字符串、“括号之间”和红色一样显示,您能否确认我的假设这是 Google Chrome v(69.0.3497.100)控制台显示错误?


聚苯乙烯。
只有Firefox似乎可以正确显示字符串键:

Chrome、Opera Firefox Edge MS IE
在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

4

4 回答 4

3

考虑对象foo

var foo = {};

a) 可以创建一个包含空格的对象成员(“myParam.func 值”)

// You have to use square bracket notation when
// declaring properties with spaces.
foo['func value'] = 'Whatever you want.';

b) 可以创建一个“未定义”的对象成员(“myParam.undefined”)

// Keyword undefined:
foo[undefined] = undefined;
// String 'undefined':
foo['undefined'] = 'undefined';

c)对于(b)情况,“未定义”真的是“未定义”还是只是一个字符串“未定义”?

取决于你如何定义它。在您的屏幕截图中,它是undefined属性值的关键字和'undefined'键的字符串。

要验证对象内部的类型,您可以运行:

Object.keys(foo).map(key => typeof key);
Object.values(foo).map(value => typeof value);
于 2018-09-19T17:15:20.127 回答
0

这是 JavaScript 的优点之一。

a) 我们可以创建带有空格的对象键,因为对象键可以是字符串。当您想查看键为 String 的对象的值时,您需要按以下方式进行操作

var a = {
  'my key': 'my key'
  yourKey: 'your key'
}
a['my key'];
a.yourKey

b) 在 JavaScript 中 undefined 是一种数据类型,因此拥有值为 undefined 的变量是完全合法的

c) 它确实是未定义的。在此处查看更多信息:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined

于 2018-09-19T17:16:51.987 回答
0

让我们回答你的问题。

a) 可以创建一个包含空格的对象成员(“myParam.func 值”)

const myParam = {}
myParam["func value"] = 'serge';
console.log(myParam)

可以,但是包含空格或连字符或以数字开头的属性名称只能使用方括号表示法访问

b)可以创建一个“未定义”的对象成员(“myParam.undefined”)

的。对象属性名称可以是任何有效的 JavaScript 字符串,也可以是可以转换为字符串的任何内容,包括空字符串

const myParam = {};
myParam.undefiend = 'serge';
console.log(myParam)

c)对于(b)情况,“未定义”真的是“未定义”还是只是一个字符串“未定义”?

我猜这是字符串“未定义”

于 2018-09-19T17:17:32.207 回答
-3

回答 c "undefined" 通常指向 "null" 值,你可以 console.log(null) 并且你可以找到 undefined

于 2018-09-19T17:09:05.473 回答