Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 为什么';";myValue=myArray[1.5]&引用;返回错误?_Javascript_Arrays_Compiler Errors - Fatal编程技术网

Javascript 为什么';";myValue=myArray[1.5]&引用;返回错误?

Javascript 为什么';";myValue=myArray[1.5]&引用;返回错误?,javascript,arrays,compiler-errors,Javascript,Arrays,Compiler Errors,为了从数组中获取项,获取项的值必须是整数。像这样: var myArray = ["apples", "oranges", "sugar", "onions", "steak"]; alert(myArray[2]);//2 is the integer I'm talking about 但是,下面的代码仍然可以使用 var myArray = ["apples", "oranges", "sugar", "onions", "steak"]; alert(myArray[1.5]);//1

为了从数组中获取项,获取项的值必须是整数。像这样:

var myArray = ["apples", "oranges", "sugar", "onions", "steak"];
alert(myArray[2]);//2 is the integer I'm talking about
但是,下面的代码仍然可以使用

var myArray = ["apples", "oranges", "sugar", "onions", "steak"];
alert(myArray[1.5]);//1.5 is the decimal(float) value I'm talking about
为什么系统不能自动对值进行四舍五入?或者至少给出一个十进制错误?以下代码不返回任何错误:

试试看{
var myArray=[“苹果”、“橙子”、“糖”、“洋葱”、“牛排”];
var-health=myArray[1.5];

}JavaScript中的catch(e){alert(e);}
数组是对象(即
typeof[]=='object'

:

数组是类似列表的对象,其原型具有执行遍历和变异操作的方法。[……]

数组不能使用字符串作为元素索引(如在关联数组中),但必须使用整数。使用括号表示法(或点表示法)通过非整数进行设置或访问不会从数组列表本身设置或检索元素,但会设置或访问与该数组的对象属性集合关联的变量。数组的对象属性和数组元素列表是分开的,数组的遍历和变异操作不能应用于这些命名属性

由于数组是对象,因此可以向其添加新属性:

var myArray = ["apples", "oranges", "sugar", "onions", "steak"];
myArray.foo = 'bar';
myArray[1.5] = 'baz';

对象属性始终是字符串。现在,当您尝试访问
myArray[1.5]
时,您不是在访问数组索引,而是访问值为
baz

的属性
myArray['1.5']
,数组是对象,其行为类似于对象。使用不是数组定义索引的数字只是访问属性的一个普通值。@NinaScholz但如果位置“1.5”的数组中没有值,那么系统为什么不舍入该值或返回一个错误?问题不是数组,而是对象。对象允许使用比数组将其用作项索引(必须是32位(整数)正数)的键更多的键。所有其他值,即使是给定的数字或
1.5
也作为字符串(作为索引)和属性访问器。这些属性在使用数组方法时是不可见的,但是您可以通过对象方法获取它们。
myArray.foo
做什么?它获取或设置数组的对象属性,名称为
foo