Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 以下变量是什么?_Javascript - Fatal编程技术网

Javascript 以下变量是什么?

Javascript 以下变量是什么?,javascript,Javascript,当我在控制台中运行命令x='test'.match(/(t(e)/)时,我得到以下输出 [“te”,“e”,索引:0,输入:“test”] 然后运行以下命令: x.length 输出:2 Object.keys(x).length 输出:4 这里发生了什么?变量似乎是一个数组文字,在索引2和3处有对象文字。如果这是一个nooby问题,很抱歉,但是当我尝试这样做时 x=[“te”,“e”,索引:0,输入:“test”] 我明白了 Uncaught SyntaxError:意外标记:这是预期的,但我

当我在控制台中运行命令
x='test'.match(/(t(e)/)
时,我得到以下输出

[“te”,“e”,索引:0,输入:“test”]

然后运行以下命令:

x.length
输出:
2

Object.keys(x).length
输出:
4

这里发生了什么?变量似乎是一个数组文字,在索引2和3处有对象文字。如果这是一个nooby问题,很抱歉,但是当我尝试这样做时

x=[“te”,“e”,索引:0,输入:“test”]
我明白了
Uncaught SyntaxError:意外标记:
这是预期的,但我不知道函数如何将
x
设置为该值。

请给我一些帮助

  • [“te”,“e”,索引:0,输入:“test”]
    匹配
    函数返回的对象的字符串化版本
  • x
    未“设置为该值”。
    x
    设置为描述正则表达式匹配项的对象。执行
    console.log(x)
    时,
    x.toString()
    在引擎盖下调用,并返回
    [“te”,“e”,索引:0,输入:“test”]
    。为了方便起见,这只是一种文本表示。底层结构更复杂
现在来看其他的问题:

  • “te”
    已与您的正则表达式匹配
  • “e”
    是此匹配的捕获(因为您的regexp中有括号)
  • x.length
    描述找到的匹配/捕获数
  • Object.keys(x).length
    为4。您有2个捕获(2个键),其中添加了2个键,用于
    索引和
    输入

测试的结果。match(/(t(e)/)实际上就是
[“te”,“e”]
,它的长度为2,似乎是您想要得到的,所以您可以使用
x=[“te”,“e”]
“数组是列表状的对象,其原型具有执行遍历和变异操作的方法。”

当您在这里访问“索引”或“输入”时,它是一个对象的属性,就像其他属性一样

试试这个:

a = new Array() 
a.hello = 'world' 
console.log(a.hello)
console.log(Object.keys(a)) 
您将获得以下输出:

'world' 
['hello']

数组是对象,索引是属性名,但不显示在数组文字中。控制台混合了数组和对象文字语法(如果用作代码,则无效)

等效的对象文字应为:

{
 0: "te",
 1: "e",
 index: 0,
 input: "test"
};
但对象文字构造普通对象,而不是数组对象。可以使用以下方法构造等效数组:

var x = ['te', 'e'];
x.index = 0;
x.input = 'test';

控制台依赖于实现,它显示的内容不一定是有效的对象或数组文字。它只是试图提供帮助。有关更多帮助,请参阅。不是
x.toString
,而是
proprietaryStringRepresentation(x)