官方说eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。
但是没有弄明白它解析数组为嘛按照扩展运算符来解析;
问题请移步到下面我自己的回答,~
官方说eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。
但是没有弄明白它解析数组为嘛按照扩展运算符来解析;
问题请移步到下面我自己的回答,~
function test1(a, b, c) {
console.log(a, b, c)
}
eval("test1(" + [1,2,3] + ")") //1 2 3
function test2(a, b, c){
console.log(a, b,c)
}
let arr = [1,2,3]
test2(...arr) //1 2 3
function test3(){
console.log(...arguments)
}
test3(1,2,3) //1 2 3
function test4(a) {
console.log(a)
}
function check() {
eval("test4(" + "arguments" +")")
}
check(1,2,3) //Arguments(3) [1, 2, 3, callee: ƒ, Symbol(Symbol.iterator): ƒ]
check([1,2,3]) //Arguments [Array(3), callee: ƒ, Symbol(Symbol.iterator): ƒ]
看上去似乎跟扩展运算符差不多,但实际上,扩展运算符会将类数组当成数组处理,
但是eval似乎不会,忘大牛们帮忙分析下~
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
你这样输出的结果实际上是
document.write
输出的是字符串,第一行'[1, 2, 3]'
本身就是字符串可以直接输出,而第二行是数组,需要通过toString()
来转换到String
类型