第一种:
var log = function() {
return console.log(arguments);
};
log('a', 'n');
输出:
["a", "n"]
第二种:
var log = function() {
return console.log.apply(console, arguments);
};
log('a', 'n');
输出:
a n
请问这里是什么原理造成的?
第一种:
var log = function() {
return console.log(arguments);
};
log('a', 'n');
输出:
["a", "n"]
第二种:
var log = function() {
return console.log.apply(console, arguments);
};
log('a', 'n');
输出:
a n
请问这里是什么原理造成的?
第一个:log('a','n')
传入a
和n
两个参数,这两个参数被封装成一个array,以arguments
表示,所以最终调用的方法是console.log(['a','n'])
第二个:apply
方法用于遍历一个array作为参数来执行某一函数,所以最终其实是执行了两次输出。console.log('a');console.log('n')
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
第一种情况其实你打印的是arguments这一个变量,所以会输出一个数组。
第二种情况arguments是作为包含所有参数的变量传递给console.log,所以打印的是两个字符。
这就好比有人开车送给你两个西瓜,第一种情况你直接把车收下了,第二种情况你只收下了车里的西瓜。