搜索
javascript - js数组赋值ar = ar.push(y)为什么是错的?
高洛峰
高洛峰 2017-04-10 16:30:24
[JavaScript讨论组]

一开始我是这么写的:

    function aryPush(){
        var y = 'y';
        var ar = ['x'];
        if (y){
            ar.push(y);
        }
        alert(ar); //[x,y]
    }

没问题,输出正是我要的结果。
但是我嫌用if写在3行不够简洁,于是改为下面的:

    function aryPush(){
        //var y = 'y';
        var ar = ['x'];
        ar = y ? ar.push(y) : ar;
        //ar = ar.push(y);
        alert(ar); //2
    }

无论我是否定义y,结果都是输入2。实在想不明白。
js入门菜鸟,请勿见笑,请不吝赐教!

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(2)
怪我咯

push方法不返回原数组,所以你把它的返回值赋值给ar是不对的。也就是说,你想往数组后面添加数据,直接调用push就好了,没必要再赋值。

function aryPush(){
    var y = 'y';
    var ar = ['x'];
    y ? ar.push(y) : ar;
    alert(ar);
}
PHPz

array.push 返回的是新的数组长度,所以是 2

未定义 y 的话会出错的,一定是 y 在哪里定义了。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号