js数组赋值ar = ar.push(y)为什么是错的?

发布于 2022-09-01 22:29:49 字数 484 浏览 6 评论 0

一开始我是这么写的:

    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入门菜鸟,请勿见笑,请不吝赐教!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

标点 2022-09-08 22:29:49

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

function aryPush(){
    var y = 'y';
    var ar = ['x'];
    y ? ar.push(y) : ar;
    alert(ar);
}
最舍不得你 2022-09-08 22:29:49

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文