JavaScript:浏览器控制台如何显示对象键值
JavaScript: How browser consoles displays the object key values
从 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) 可以创建一个"undefined"对象成员("myParam.undefined")
c) 对于 (b) 情况,"undefined" 是真的 "undefined" 还是只是一个字符串 "undefined" ?
PS. 感谢@ryanpcmcquen 的评论,以下PS
PPS. 你能证实我的假设,这是一个 Google Chrome v(69.0.3497.100) 控制台显示错误 如果 字符串不像字符串 、"between brackets" 和红色那样显示?
PPS.
只有 Firefox 似乎能正确显示字符串键:
Chrome, 歌剧
Firefox
边缘
MS IE
c "undefined" 的答案通常朝向 "null" 值,您可以 console.log(null) 并且可以找到未定义的
正在考虑对象 foo
:
var foo = {};
a) 可以创建一个包含空格的对象成员("myParam.func value")
// You have to use square bracket notation when
// declaring properties with spaces.
foo['func value'] = 'Whatever you want.';
b) 可以创建一个"undefined"对象成员("myParam.undefined")
// Keyword undefined:
foo[undefined] = undefined;
// String 'undefined':
foo['undefined'] = 'undefined';
c) 对于 (b) 情况,"undefined" 真的是 "undefined" 还是只是一个字符串 "undefined"?
看你怎么定义。在您的屏幕截图中,属性 值是关键字 undefined
,键是字符串 'undefined'
。
要验证对象内部的类型,您可以 运行:
Object.keys(foo).map(key => typeof key);
Object.values(foo).map(value => typeof value);
这是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
让我们回答您的问题。
a)可以创建一个对象成员包含spaces ("myParam.func value")
const myParam = {}
myParam["func value"] = 'serge';
console.log(myParam)
是,但是 属性 名称带有 space 或连字符,或者以数字开头的名称只能使用方块访问括号表示法
b) 可以创建一个 "undefined" 对象成员 ("myParam.undefined")
是。对象 属性 名称可以是任何有效的 JavaScript 字符串,或任何可以转换为字符串的内容,包括空字符串
const myParam = {};
myParam.undefiend = 'serge';
console.log(myParam)
c) 对于 (b) 情况,"undefined" 真的是 "undefined" 还是只是一个字符串 "undefined" ?
我猜是字符串 "undefined"
从 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) 可以创建一个"undefined"对象成员("myParam.undefined")
c) 对于 (b) 情况,"undefined" 是真的 "undefined" 还是只是一个字符串 "undefined" ?
PS. 感谢@ryanpcmcquen 的评论,以下PS
PPS. 你能证实我的假设,这是一个 Google Chrome v(69.0.3497.100) 控制台显示错误 如果 字符串不像字符串 、"between brackets" 和红色那样显示?
PPS.
只有 Firefox 似乎能正确显示字符串键:
Chrome, 歌剧
Firefox
边缘
MS IE
c "undefined" 的答案通常朝向 "null" 值,您可以 console.log(null) 并且可以找到未定义的
正在考虑对象 foo
:
var foo = {};
a) 可以创建一个包含空格的对象成员("myParam.func value")
// You have to use square bracket notation when
// declaring properties with spaces.
foo['func value'] = 'Whatever you want.';
b) 可以创建一个"undefined"对象成员("myParam.undefined")
// Keyword undefined:
foo[undefined] = undefined;
// String 'undefined':
foo['undefined'] = 'undefined';
c) 对于 (b) 情况,"undefined" 真的是 "undefined" 还是只是一个字符串 "undefined"?
看你怎么定义。在您的屏幕截图中,属性 值是关键字 undefined
,键是字符串 'undefined'
。
要验证对象内部的类型,您可以 运行:
Object.keys(foo).map(key => typeof key);
Object.values(foo).map(value => typeof value);
这是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
让我们回答您的问题。
a)可以创建一个对象成员包含spaces ("myParam.func value")
const myParam = {}
myParam["func value"] = 'serge';
console.log(myParam)
是,但是 属性 名称带有 space 或连字符,或者以数字开头的名称只能使用方块访问括号表示法
b) 可以创建一个 "undefined" 对象成员 ("myParam.undefined")
是。对象 属性 名称可以是任何有效的 JavaScript 字符串,或任何可以转换为字符串的内容,包括空字符串
const myParam = {};
myParam.undefiend = 'serge';
console.log(myParam)
c) 对于 (b) 情况,"undefined" 真的是 "undefined" 还是只是一个字符串 "undefined" ?
我猜是字符串 "undefined"