2 javadeep javadeep 于 2014.11.10 12:04 提问

javascript中,name和names作为数组名,数组长度为什么不一样?
enter code here<head>
    <meta http-equiv="Content-Type"content="text/html";charset="utf-8">
    <script type="text/javascript">
        var names = ['张三','李四','王五','赵六'];
        var locals = ['张三','李四','王五','赵六'];

        document.write(names.length+',');
        document.write(locals.length);
    </script>
</head>

运行结果是:4,4

enter code here<head>
    <meta http-equiv="Content-Type"content="text/html";charset="utf-8">
    <script type="text/javascript">
        var name = ['张三','李四','王五','赵六'];
        var local = ['张三','李四','王五','赵六'];

        document.write(name.length+',');
        document.write(local.length);
    </script>
</head>

运行结果是:11,4
为什么会这样?name和names作为数组名到底有什么区别?

1个回答

chinmo
chinmo   Rxr 2014.11.10 13:11

这个应该是关键字造成影响了吧
var name = ['张三','李四','王五','赵六'];
for(i=0;i<name.length;i++){
document.writeln(name[i]);
}

你会发现返回的是:
张 三 , 李 四 , 王 五 , 赵 六

逐个分开的

然后你再输出这个看:

document.write(window.name)
你就知道返回的是 张三,李四,王五,赵六

这样你应该知道是关键字造成的了吧

因为正好window对象 有这么一个属性

javadeep
javadeep 哦,var name=[...];这句并没有定义name数组,而是将(张三,...,赵六)作为字符串赋值给window的name属性,所以name.length是一个字符串的长度,不是数组长度!soga,thank u!
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
js 用&quot;name&quot;做数组变量命名的问题
最近用因为用“name”做js数组类型变量名称时候发现个问题html代码&amp;lt;!doctype html&amp;gt; &amp;lt;html lang=&quot;en&quot;&amp;gt; &amp;lt;head&amp;gt; &amp;lt;title&amp;gt;Document&amp;lt;/title&amp;gt; &amp;lt;script&amp;gt; var name=[&quot;aa&quot;,&quot;bb&quot;,&quot
二维数组名如何作为参数传递
在用二维数组名作为参数传递时容易出现Segmention Error。这是因为不能正确为二维数组中元素寻址的问题,正确的方法如下: [cpp] view plaincopy #include      #include           #define N   4     void testArray(int *a, int m, in
指针变量为什么可以作为“数组名”?
在严蔚敏《数据结构(C语言版)》中,发现, p22定义顺序存储结构: typedef srtuct{ ElemType *elem; //存储空间基址 int length; //当前长度 int listsize; //当前分配的存储容量 }SqList; 这里,elem为ElemType类型的指针变量,随后在p22的插入函数中,定义了L为SqList类型的结构体变量
C语言中数组名作为参数进行函数传递
C语言中数组名作为参数进行函数传递在普通变量或下标变量作函数参数时,形参变量和实参变量是由编译系统分配的两个不同的内存单元。在函数调用时发生的值传送是把实参变量的值赋予形参变量。在用数组名作函数参数时,不是进行值的传送,即不是把实参数组的每一个元素的值都赋予形参数组的各个元素。因为实际上形参数组并不存在,编译系统不为形参数组分配内存。那么,数据的传送是如何实现的呢?在我们曾介绍过,数组名就是数组的首
[JAVA] .length 获取数组长度
其实写这篇日志的原因是我钻牛角尖了。。。 老师在课上有讲到一个关于获取数组长度的知识点—— 格式: 数组名.length
sizeof(数组名)及strlen(数组名)
程序的输出结果为:  1:100  2:4  3:1   //相当于a[100]这个数所占的字节大小,也就是一个char字节占得大小  当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。不论数组a的容量是多少,sizeof(a)始终等于sizeof(char  *)。  func(char* p) { strcpy(p, "1234"); } int main(
数组作为函数形参和用指针作为函数形参
还是有差别的 虽然大多数时候都可以相互用最大的差别就是指针可以改变,可以通过指针改变指向内容的值,但数组名不行 举个例子:(分别作为形参) int num[10], *p; p = num;//此时p指向数组的第一个元素 在主函数里调用两个函数 1 Sum(num);
C语言中值得深入知识点----数组做函数参数、数组名a与&a区别、数组名a的"数据类型"
本文用简单的例子说明了C语言中数组做函数参数,数组名a与&a区别,数组名a的"数据类型",以及编译器的不同,相应指针所占字节的不同导致程序的细微差别。
数组名作为左值和右值的区别
简单的说,就是数组名出现在赋值符号“=”左边的就是左值,出现的右边的就是右值。
数组名和指针作为形参?
1.用数组名做函数参数 f(int arr[],int n)① 调用时采用:f(arr,10) 由于数组名代表的是数组的地址,所以用数组名做参数的时候,其实是进行一个地址传递,会改变整个数组的值,所以①式也可以等价于: f(int *arr,int n) 2.多维数组名作为函数的参数 在用指针变量做形参以接受实参数组名传递的地址时,有两种方法: ①采用和一维数组相同的