我在Google Chrome上测试代码时出现问题,在Firefox上测试时没有任何问题。
我有一个函数,我在onblur
事件中调用它。
它在Firefox上工作正常,但谷歌Chrome在控制台上给了我这个错误
未捕获的ReferenceError:未定义填充
HTML code:
<input type="text" name="title" id="title" placeholder="mytitle" onblur='fill(this);'>
JavaScript代码:
function fill(element,value = false){
if(element.value == ""){
$("#"+element.id).css('border-color','red');
}else{
$("#"+element.id).css('border-color','#56de56');
}
if(value == true){
if(element.value > 75 || element.value < 5)
$("#"+element.id).css('border-color','red');
}
}
我在该行之前和之后声明了fill
函数,所以我遇到了同样的问题。
答案 0 :(得分:3)
EcmaScript,标准JS基于版本5.1,不支持可选参数。
function fill(element,value = false){
不符合您的预期。相反,您必须手动执行此操作:
function fill(element,value){
if(typeof value === 'undefined') {
value = false;
}
或者在较短的概念中,如果你只是期望布尔值
function fill(element,value){
value = value || false;
注意 - 这两个都有他们错过的案例 - 正如FabrícioMatté在评论中建议的那样,你也可以检查arguments.length
是否想要区分不通过参数,并明确地获得undefined
尽管很少案件。
虽然可选参数在EcmaScript 6提案中
(但Firefox,does independently support them even today)