Javascript 如果node.js中的语句错误,则为NULL
我正在使用Node.js,我创建了一个如下所示的函数:Javascript 如果node.js中的语句错误,则为NULL,javascript,node.js,Javascript,Node.js,我正在使用Node.js,我创建了一个如下所示的函数: function makeTitleWith(name) { if (name === null) { return "Hello, welcome to my app!" } else { return "Hello, welcome " + name + "!" } } 当我用null变量调用它时,它返回“你好,欢迎null!”。我是JS的新手,这让我发疯。我也尝试了==而不是==
function makeTitleWith(name) {
if (name === null) {
return "Hello, welcome to my app!"
} else {
return "Hello, welcome " + name + "!"
}
}
当我用null变量调用它时,它返回“你好,欢迎null!”
。我是JS的新手,这让我发疯。我也尝试了==
而不是==
,但是没有什么区别
当我用一个null变量调用它时,它返回“你好,欢迎null!”
这意味着你不是用name
设置为null
来调用它,而是用name
设置为“null”
来调用它(或者我稍后将讨论不太可能的第二种可能性)<代码>“null”不等于null
(或者=
或者==
)
例如:
函数makeTitleWith(名称){
if(name==null){
return“你好,欢迎使用我的应用程序!”
}否则{
返回“你好,欢迎”+姓名+“!”
}
}
log(makeTitleWith(“null”);
//或者更可能:
var n=字符串(null);
console.log(makeTitleWith(n))代码>
当我用一个null变量调用它时,它返回“你好,欢迎null!”
这意味着你不是用name
设置为null
来调用它,而是用name
设置为“null”
来调用它(或者我稍后将讨论不太可能的第二种可能性)<代码>“null”
不等于null
(或者=
或者==
)
例如:
函数makeTitleWith(名称){
if(name==null){
return“你好,欢迎使用我的应用程序!”
}否则{
返回“你好,欢迎”+姓名+“!”
}
}
log(makeTitleWith(“null”);
//或者更可能:
var n=字符串(null);
console.log(makeTitleWith(n))代码>我建议您可以这样修改上述代码(更像是防御编码),并期望/强制调用方将字符串值作为输入参数发送到函数
if(typeof name == "string"){
return "Hello, welcome " + name + "!";
}
return "Hello, welcome to my app!";
另外请注意,如果调用方使用null或空对象调用函数,在这两种情况下,typeof操作符都返回object。因此,根据您的情况,我不认为该方法是使用null或空对象调用的。我建议您可以像这样修改上述代码(更像是防御性编码),并期望/强制调用方将字符串值作为输入参数发送给函数
if(typeof name == "string"){
return "Hello, welcome " + name + "!";
}
return "Hello, welcome to my app!";
另外请注意,如果调用方使用null或空对象调用函数,在这两种情况下,typeof操作符都返回object。因此,根据您的情况,我不认为该方法是使用null或空对象调用的。@t.J.Crowder抱歉,它执行另一个块。不是===null的那个。我现在修复了我的问题。然后请添加一个显示实际问题的图标。@andymcculough是的,我也尝试过检查未定义,但它没有改变任何东西。如果传递给函数的值是未定义的,它将以未定义而不是null的形式记录到控制台,对吗?请在这里发布console.log(name)返回的内容?@T.J.Crowder抱歉,它执行另一个块。不是===null的那个。我现在修复了我的问题。然后请添加一个显示实际问题的图标。@andymcculough是的,我也尝试过检查未定义,但它没有改变任何东西。如果我传递给函数的值是未定义的,它会以未定义而不是null的形式记录到控制台上,对吗?你能在这里发布console.log(name)返回的内容吗?“Hello,welcome”+name+“!”
会强制null
成为字符串。@BenM-会,但不会给出OP的代码,它检查null
并执行另一个分支。如果是这样的话,防止这种情况发生的最佳方法是什么?我应该编写自己的toString函数,检查值是否为null并防止它被更改为string(并在我的代码中造成灾难),还是每个人都使用某种现有的方法?@user109321948492842303-在转换为string之前执行null
检查,例如x=y==null?null:字符串(y)代码>或类似。您可以创建自己的toNonNullString
函数或类似函数,但如果您提前进行验证,则实际上并不需要它。另外,您可以通过以下命令捕获null、未定义、空字符串和false:if(name)
“Hello,welcome”+name+!“
将null
强制为字符串。@BenM-它会,但它不会给出OP的代码,该代码检查null
并执行另一个分支。如果是这样,那么防止这种情况发生的最佳方法是什么?我应该编写自己的toString函数,检查值是否为null并防止它被更改为string(并在我的代码中造成灾难),还是每个人都使用某种现有的方法?@user109321948492842303-在转换为string之前执行null
检查,例如x=y==null?null:字符串(y)代码>或类似。您可以创建自己的toNonNullString
函数或类似函数,但如果您提前进行验证,则实际上并不需要它。另外,您可以通过以下命令捕获null、未定义、空字符串和false:if(name)