js问题,下面的代码为何是这样的?

<!DOCTYPE html>
      <html lang="en">
      <head>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <title>Document</title>
            <script>
                  var arr = ["北京" , "上海" , "南京"];
                  var scc = arr.push("湖北" , "西安");
                  alert(arr);
                  alert(scc);
            </script>
      </head>
      <body>
            
      </body>
</html>

假如不把arr.push赋给 scc的话,那么alert(arr)= "北京" , "上海" , "南京""湖北" , "西安";

为什么把arr.push赋给scc后,alert(scc)就变成了阿拉伯数字?

push()是对数组操作的一种方法,为了方便用户操作数组,var arr=[‘南京’];本质上就是 var arr = new Array(‘南京’);new Array()是一个数组类,你也可以把它看做一个数组的构造函数,‘南京’是你传入的参数,而push就是这个数组类的一个方法,也就是一个函数,在js中万物皆对象,arr.push()就是我要调用arr这个对象下的push()方法也就是push()函数,当然arr里是没有这个函数的,那么系统就会去arr的原型上去找,也就是Array原型里,找到并执行,然后return 返回当前的数组长度。

arr.push()它的返回值为数组的长度

push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度

push()不是一个函数?可以了解一下它的底层原理,它内部就是返回了一个数组的长度,文档也有说明

你要用人家的就必须遵循人家的规则来你也可以自己封装一个按照你的规则来哈哈哈