用js中push追加和直接用符字符串追加有什么区别

JavaScript09

用js中push追加和直接用符字符串追加有什么区别,第1张

一、用法不同

字符串的添加用concat()。

var a=[0,1,2,3,4,5];

1、 a.push(11); a[1] = 22;

两种都可以,第一种是加在数组的最后结果var a=[0,1,2,3,4,5,11];第二种是加在数组的指定位置结果var a=[0,22,1,2,3,4,5]。

二、作用不同

.push() 方法可向数组的末尾添加一个或多个元素,该方法直接修改原对象,返回值是数组的新的长度。

向数组末尾添加多个元素的例子:

var arr=['1','2','3'];arr.push('4','7')   //5

.concat()既可以被数组使用,也可以被字符串使用。该方法无法直接修改原对象,返回值是拼接完的对象。

当被字符串使用时,该方法用于连接两个或多个字符串:string.concat(string1, string2, ..., stringX)

JS一个标记符的序列。这套标记符包含六个构造字符、字符串、数字和三个字面名。

JS是一个序列化的对象或数组。

1、六个构造字符:

begin-array = ws %x5B ws [ 左方括号

begin-object = ws %x7B ws { 左大括号

end-array = ws %x5D ws ] 右方括号

end-object = ws %x7D ws } 右大括号

name-separator = ws %x3A ws : 冒号

value-separator = ws %x2C ws , 逗号

扩展资料

JavaScript一种脚本语言,其源代码在发往客户端运行之前不需经过编译,而是将文本格式的字符代码发送给浏览器由浏览器解释运行。

直译语言的弱点是安全性较差,而且在JavaScript中,如果一条运行不了,那么下面的语言也无法运行。而其解决办法就是于使用try{}catch(){}:

console.log("a")//这是正确的

console.log("b")//这是正确的

console.logg("c")//这是错误的,并且到这里会停下来

console.log("d")//这是正确的

console.log("e")//这是正确的

try{console.log("a")}catch(e){}//这是正确的

try{console.log("b")}catch(e){}//这是正确的

try{console.logg("c")}catch(e){}//这是错误的,但是到这里不会停下来,而是跳过

try{console.log("d")}catch(e){}//这是正确的

try{console.log("e")}catch(e){}//这是正确的

因为a[0]是个对象,所以为引用类型;引用类型栈内存中存放的是指向堆内存中的指针,也就是说push后b中存放的是能访问a[0]堆内存的指针,则b[0]的指针所指向的值与a[0]指针指向的值是同一个,内存也是同一个;此时,你再对b[0]中的c属性进行操作,则改内存中的值改变,则a[0]的值同样改变,这里就是引用类型的基本存储问题。

要解决的话可采用深拷贝的方法,将a[0]的指针与b[0]的指针分别指向不同的内存即可解决

可将第三行修改为b.push(JSON.parse(JSON.stringify(a[0])))

push 方法改变的是数组本身,返回值是push之后数组的长度。

所以,代码应该这样写:

var queue = []

queue.push( 'A', 'B' )

console.log( queue ) // output [ 'A', 'B' ]