Javascript 如果变量未在每个循环内设置,如何显示?
我这里有个问题。如果未定义msg,则我得到一个错误,并且浏览器上没有显示任何内容 可能的解决方案:为未定义msg的情况创建默认消息 试试看: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... }); 问题: 上面的尝试不
$.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!