Chrome不会声明我的JavaScript功能

时间:2013-08-16 18:50:43

标签: javascript google-chrome

我在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函数,所以我遇到了同样的问题。

1 个答案:

答案 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