之间的区别是什么
$('#datetimepicker').datetimepicker({
inline:true,
format: 'DD/MM/YYYY',
daysOfWeekDisabled: [0, 6]
});
$("#datetimepicker").click(function(){
var dateData = $('#datepicker-data').val();
alert(dateData);
});
和
function(...args) {
// args is an array
}
由于将数组转换为数组很容易,还有其他差异吗?
类似的问题:
function() {
// arguments is an array-like
}
和
myFunction.apply(null, args);
答案 0 :(得分:6)
...args
是新的;直到ES6 function(foo, bar, ...others)
Array.prototype.slice.call(arguments, 0)
...args
对代码读者来说更为明显然而,作为1 not everything supports it yet的必然结果。
答案 1 :(得分:2)
Re:apply()
和点差之间的差异(传递null
或thisArg
到apply()
时的差异,如示例所示):
myFunction.apply(null, args);
myFunction(...args);
除了传播是新的,因此目前没有广泛支持,apply()
接受数组或类似数组的参数对象,而spread将适用于任何可迭代的。例如,您可以传播Set
或Map
作为参数,而您无法将其作为argArray
参数传递给apply()
(尽管您当然可以将其作为call()
的参数传播:myFunction.call(whatever, ...someIterable)
)。
由于将数组转换为数组很容易,还有其他差异吗?
对于arguments
而言,这并不容易。做错了(或者可能根本没有)会导致JS引擎取消优化函数,如果有正确的方法可以避免它需要烦人的样板来执行它。