javascript - JS 设计的只支持一维数组,出于何种考虑,还支持二维数组的写法?

 手机用户2502860727 发布于 2022-11-10 00:59

JS 设计的只支持一维数组,出于何种考虑,还支持二维数组的写法?

这个特性差点把我虐成狗

最初以为是 Chrome 的bug,但是测试是 IE、FireFox都支持,结果都一直,难道是标准的一部分

var testArr = [];
testArr[0,0] = 0;
console.log(testArr, "    len:", testArr.length, "    0,0:", testArr[0,0]);
//IE9:日志: 0    len:1    0,0:0 
//Chrome:[0] "    len:" 1 "    0,0:" 0
//Firefox:Array [ 0 ]     len: 1     0,0: 0

testArr[0,1] = 1;
console.log(testArr, "    len:", testArr.length, "    0,1:", testArr[0,1]);
//IE9:日志: 0,1    len:2    0,1:1 
//Chrome:[0, 1] "    len:" 2 "    0,1:" 1
//Firefox:Array [ 0, 1 ]     len: 2     0,1: 1

testArr[0,2] = 2;
console.log(testArr, "    len:", testArr.length, "    0,2:", testArr[0,2]);
//IE9:日志: 0,1,2    len:3    0,2:2 
//Chrome:[0, 1, 2] "    len:" 3 "    0,2:" 2
//Firefox:Array [ 0, 1, 2 ]     len: 3     0,2: 2

testArr[1,1] = 11;
console.log(testArr, "    len:", testArr.length, "    0,1:", testArr[0,1] , "    1,1:", testArr[1,1]);
//IE9:日志: 0,11,2    len:3    0,1:11    1,1:11 
//Chrome:[0, 11, 2] "    len:" 3 "    0,1:" 11 "    1,1:" 11
//Firefox:Array [ 0, 11, 2 ]     len: 3     0,1: 11     1,1: 11

//结论:
testArr[100,1] == testArr[1]
//下面代码是搞笑的
var arr = [1,2], val;
//val = arr[1]写成不知道算不算黑科技
val = arr[1,0,0,8,6,"是","中","国","移","动","的","客","服","电","话",1] 
2 个回答
  • 想明白了,自问自答下:

    var arr = [1,2];

    方括号([])内的内容被当作 表达式求值了

    arr["我",alert('我执行了!'),1] == 2

    代码分解

    var _temp;
    _temp= "我",alert('我执行了!'),1;
    //_temp = 1
    arr[_temp] == 2
    2022-11-12 01:50 回答
  • 你知道逗号运算符吗?

    var a = 1, 2;
    // a === 1
    
    var a = (1, 2);
    // a === 2
    
    var a = (1, 2, 3, 4, 5, 6);
    // a === 6;

    所以 arr[1,2] 相当于 var i = (1, 2); arr[i],也就是 arr[2]

    2022-11-12 01:50 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有