未捕获的TypeError:undefined不是函数

时间:2014-04-30 04:45:06

标签: javascript

我一次又一次地使用chrome获得此错误。虽然这段代码适用于firefox

这是错误图像的链接

https://www.dropbox.com/s/6ikiy5eesoxco4n/12_edited.jpg

我的代码如下

function weight(w)
{
    var Cap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    var small = 'abcdefghijklmnopqrstuvwxyz';
    var spcl = "~!@#$%^&*()_+[]\{}|;':,./<>?";
    var num = '0123456789';
    var p = [];

    for(var j=0;j<w.length;j++)
        {
        if(Cap.contains(w[j])==true)
            p[j] = Cap.indexOf(w[j]) + 2;
        else if(small.contains(w[j])==true)
            p[j] = small.indexOf(w[j]) + 1;
        else if(num.contains(w[j])==true)
            p[j] = num.indexOf(w[j]);
        else if(spcl.contains(w[j])==true)
            p[j] = 1;
        }

    return _.reduce(p,function(memo, num){ return memo + num; }, 0); 

}

我不明白为什么我的函数if(Cap.contains(w[j])==true)未定义?

3 个答案:

答案 0 :(得分:3)

String.prototype.contains并未在所有浏览器中实现,因为它是即将推出的ECMAScript 6标准的一部分。

但是,您可以轻松修补它。

if (!String.prototype.contains) {
    String.prototype.contains = function(s, i) {
        return this.indexOf(s, i) != -1;
    }
}

答案 1 :(得分:1)

正如 cookie monster elclanrs 正确地说,&#39;包含()&#39;尚未在ECMAScript标准(换句话说,javascript)中定义。

但是,您仍然可以在字符串中搜索值,将其用作条件语句。通常的做法是使用indexOf()并将返回值评估为正值为true,false为-1。请参阅下面的示例:

function weight(w)
{
    var Cap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    var small = 'abcdefghijklmnopqrstuvwxyz';
    var spcl = "~!@#$%^&*()_+[]\{}|;':,./<>?";
    var num = '0123456789';
    var p = [];

    for(var j=0;j<w.length;j++)
        {
        if(Cap.indexOf(w[j]) > -1)
            p[j] = Cap.indexOf(w[j]) + 2;
        else if(small.indexOf(w[j]) > -1)
            p[j] = small.indexOf(w[j]) + 1;
        else if(num.indexOf(w[j]) > -1)
            p[j] = num.indexOf(w[j]);
        else if(spcl.indexOf(w[j]) > -1)
            p[j] = 1;
        }

    return _.reduce(p,function(memo, num){ return memo + num; }, 0); 

}

答案 2 :(得分:0)

if(your_string.indexOf('-') === -1)
   {
    alert("no dash found.");
  }

对于字母数字,您可以使用正则表达式:

http://www.regular-expressions.info/javascript.html

Regular Expression for alphanumeric and underscores