今天用到toString(),想到有个toLocaleString(),那它们有什么区别呢?
先看一段代码:
let a = {
toString: function(){
return 'a---toString方法返回的值'
},
toLocaleString: function(){
return 'a---toLocaleString方法返回的值'
}
}
let b = {
toString: function(){
return 'b---toString方法返回的值'
},
toLocaleString: function(){
return 'b---toLocaleString方法返回的值'
}
}
let arr = [a, null, b]
console.log(arr)
console.log(arr.valueOf()) //返回数组本身
alert(arr)
console.log(arr.toString())
// a---toString方法返回的值,,b---toString方法返回的值
console.log(arr.toLocaleString())
//a---toLocaleString方法返回的值,,b---toLocaleString方法返回的值
// 请注意这里的,,
可以看到,valueOf()返回数组本身,alert 输出的是调用toString()方法的结果,而toString、toLocaleString则调用的时各自对应的方法。
且数组中的null或undefined会在以上四种方法中以空字符串表示,即注释中的两个逗号中间的空字符
let arr2 = [6, 66, 666, 888]
console.log('空 ', arr2.join())
console.log('undefined', arr2.join(undefined))
console.log('- ', arr2.join('-'))
console.log('a ', arr2.join('a'))
console.log('arr2 ', arr2)
join()方法比较常用,用来将数组中的元素以字符串形式返回,当不传参数或传undefined时,以逗号分隔数组元素。传入指定字符时则以指定字符分割,且不会改变数组本身!