0

我异步加载一个javascript文件,该文件包含插件默认值中定义的这一行。它在某些页面中返回正确的返回值,而在其他页面中,同一文件返回“未定义”值。任何指针?

login: '<p>Log in with your '+ fnc(code).name +' account</p>'

在同一个文件底部的某个地方,我定义了函数:

 function fnc(s){
      if(s =='' || s == 'a'){
        this.name = 'name1';
        this.value = 'value1';
      }else if(s == 'b'){
        this.name = 'name2';
        this.value = 'value2';
      }else{
        this.name = 'name1';
        this.value = 'value1';
       }
      return this;
    }

出于某种原因,该函数返回“未定义”

更新:“代码”是一个存在于其他文件中的全局变量,取决于该变量的值,我想从函数返回不同的值

UPDATE2:我想从函数返回多个值,更新代码以反映这一点。

4

3 回答 3

2

该函数中的值将是对或this的引用,具体取决于“严格模式”是否有效。windowundefined

这样写函数真的没有多大意义。似乎应该只是:

function fnc(s) {
  return s == '' || s == 'a' ? "name1" : s == "b" ? "name2" : null;
}

然后,您只需将其称为fnc(code)不需要“名称”属性即可。正如其他人也指出的那样,当“代码”不是空字符串、“a”或“b”时,您不会做出规定。

于 2012-12-28T15:36:39.483 回答
2

您是否将值传递给 fnc,而不是 ''、'a' 或 'b',因为它将返回 undefined

于 2012-12-28T15:36:55.893 回答
2

this可以参考文档窗口,除非你写一个对象,否则不要使用this

function fnc(s){
    var rc = '';    
    if(s =='' || s == 'a'){
        rc = 'name1';
    } else if (s == 'b'){
        rc = 'name2';
    }
    return rc;
}
于 2012-12-28T15:37:11.433 回答