现有项目中的这一行给出了语法错误
document.querySelectorAll('[name="callqualitycheck"]').forEach(e=> {
if(e.checked){comment = comment + "," + e.value;}
});
当我将forEach(e=> {
更改为forEach(function(e) {
时。它的工作正常。
但我不确定有什么区别,将来也不会产生任何问题。
谁能解释一下呢?
答案 0 :(得分:2)
$scope.updateEmp = function (){
$scope.isReadonly = false;
console.log("update Employee");
}
和forEach(e => { code })
可以执行相同的任务,但它们本身并不相同。
第一个使用ECMA6中引入的新箭头功能。箭头函数捕获外部范围的forEach(function(e){ other code })
(即当您使用this
时,它指的是包含它的函数的范围。)但是,常规函数具有自己的this
。箭头函数没有自己的this
这一事实实际上是它被引入的原因之一。 (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions)
第二个区别是你无法绑定箭头功能。
严格模式中出现另一个差异。鉴于这是来自周围的词汇上下文,箭头函数会忽略与此相关的严格模式规则。
因此,虽然您基本上可以使用其中任何一个执行相同的任务,但根据您的情况,一个可能比另一个更方便。
答案 1 :(得分:-1)
你不需要lambda函数中的方括号{}。 例如,您可以使用三元运算符来执行此操作。
document.querySelectorAll('[name="callqualitycheck"]').forEach(e=>
comment += e.checked?','+e.value:'');