Javascript 如果变量未在每个循环内设置,如何显示?

Javascript 如果变量未在每个循环内设置,如何显示?,javascript,jquery,Javascript,Jquery,我这里有个问题。如果未定义msg,则我得到一个错误,并且浏览器上没有显示任何内容 可能的解决方案:为未定义msg的情况创建默认消息 试试看: $.each(json.data,function(i,fb){ //some code here... if (msg.length > 150) { msg = msg.substr(0,200)+"..."; } //more code here... }); 问题: 上面的尝试不

我这里有个问题。如果未定义msg,则我得到一个错误,并且浏览器上没有显示任何内容

可能的解决方案:为未定义msg的情况创建默认消息

试试看:

$.each(json.data,function(i,fb){

//some code here...

if (msg.length > 150) {
                msg = msg.substr(0,200)+"...";
            }

//more code here...
});
问题: 上面的尝试不起作用,因为我得到的每个项目都是相同的默认消息,而不是只有在msg没有“设置”的情况下才有默认消息

请求: 能否请您帮助我编写正确的代码,以便在每个项目上,如果未定义msg,则显示默认的msg,如果未定义msg,则显示其站点

如果你缺少一些信息来帮助我,请告诉我。我现在的处境很糟糕

非常感谢, 记忆

-->

两件事

  • 我们使用
    =
    比较对象,并使用
    =
    分配变量。甚至在javascript中
  • 'undefined'
    是一个带有文本“undefined”的字符串
    undefined
    (不带引号)是javascript中的全局对象。或者可能不是全局对象,但不管它是什么,您都可以使用它来检查变量是否存在

  • 诀窍是使用==(比较)和=(实际设置变量)。

    您必须在if语句中写入
    =
    ,而不是
    =
    。此外,如果您试图测试它是否未定义,则应使用
    typeof
    ,如下所示:

    if (msg == undefined) ...
    
    使用
    typeof
    对其进行比较的想法实际上比将其与名为
    undefined
    的对象进行比较更安全。原因是对象可以重新定义,但
    typeof
    的结果永远不会改变。我不知道为什么会有人疯狂到这样做,但可以这样写:

    if (typeof msg == 'undefined')
    

    msg是您从Web服务收到的JSON数据吗?我注意到的另一件事是,您的语句应该带有==if(msg=='undefined')。也许发布整个AJAX调用以获得更多上下文。谢谢!:)(我现在要羞愧地跑了。):)此解决方案适用于任何正常情况,但它不是测试undefined的推荐方法。undefined与null不同,您可以将null传递给函数,但不能将undefined传递给函数。改用
    typeof msg==“未定义”
    if (msg == undefined) {
    
    if (msg == undefined) ...
    
    if (typeof msg == 'undefined')
    
    undefined = "hi there";
    if (msg == undefined) // oh noes!
      ...
    if (typeof msg == "undefined") // still works!