如果null在function/while/try javascript中不起作用,则提示验证

如果null在function/while/try javascript中不起作用,则提示验证,javascript,Javascript,如标题所述,如果func/while/try中的提示为null(inpname变量),则验证该提示无效。输出={} 同时,我在室外做的测试也很好。 请检查下面的代码。我做错了什么 //有效 让测试=提示(“测试”,“aasdasd”); 如果(测试===null){ 控制台日志(“取消”); } 否则{ 控制台日志(“ok”); } 让我说出你的名字; //不行 设func=()=>{ while(true){ 试一试{ inpname=提示(“名称”、“此处的名称”); 如果(inpname

如标题所述,如果func/while/try中的提示为null(inpname变量),则验证该提示无效。输出={} 同时,我在室外做的测试也很好。 请检查下面的代码。我做错了什么

//有效
让测试=提示(“测试”,“aasdasd”);
如果(测试===null){
控制台日志(“取消”);
}
否则{
控制台日志(“ok”);
}
让我说出你的名字;
//不行
设func=()=>{
while(true){
试一试{
inpname=提示(“名称”、“此处的名称”);

如果(inpname.length>10 | | inpname.length控制台输出
{}
而不是异常似乎是堆栈片段中的错误。使用
console.error
可以获得更正确的输出

也就是说,您看到的问题部分是因为您在尝试取消引用之前没有检查
impname
是否为空

更改错误检查的顺序可以解决问题(尽管堆栈片段仍然不会在异常发生时报告异常,这不是浏览器中的行为)

let func=()=>{
while(true){
var inpname=提示(“名称”、“此处的名称”);
试一试{
如果(inpname==null){
抛出“不能取消”;
}

如果(inpname.length>10 | | inpname.length抛出的错误并不是你想象的那样。如果你在catch处理程序中使用
console.error
,而不是
console.log
,你就会看到这一点。但是为什么
err
看起来像
控制台的空对象呢在本例中,t repl.it、console.log和console.error的操作与此相同,如果我单击cancel its null,则会显示抛出,除了null验证,因此它的工作方式应该与我在测试中的工作方式相同。是的,它是null,但由于在调用
.length
之前没有检查它是否为null,因此它的抛出“无法读取null的属性'length'”。如果您使用
控制台。log
出于某些原因,它不会出现。Maaaan wtf!!!!太遗憾了!!非常感谢您!我如何才能给您“加号”?我想给您答案!!!