javascript - prompt的返回值竟然能作为if的判断条件!!!?
PHPz
PHPz 2017-04-10 15:56:27
[JavaScript讨论组]

【要求】
在输入框输入网址,只有当点击确定按钮且输入的网址不为空字符串时,才打开网址。

var url = prompt("请输入网址:","http://segmentfault");
if(判断条件){
    //打开网址
}

【分析和做法】

我们先看下prompt的返回值:
1)点击确定按钮,文本框中的内容将作为返回值。当文本框内容为空时,返回""
2)点击取消按钮,将返回null

1)故要满足条件“只有当点击确定按钮且输入的网址不为空字符串”,我一开始想到的写法是:

if(url != null && url != "")

2)后来发觉就算直接把url作为if的判断条件,即写成:

if(url)

也是可以的,两者的写法等效!

【问题】
都知道if的判断条件应该得Boolean类型的值。显然,prompt的返回值不是Boolean类型,那为什么竟然可以作为if的判断条件??以上两种判断条件写法,那种更提倡?

PHPz
PHPz

学习是最好的投资!

全部回复(3)
怪我咯

首先,应该明确的是js是弱类型语言;那么这种隐式类型转换在js中存在还是非常常见的;
比如:我们在比较一些值的时候

null == undefined 
1 == '1'
...

if(

程序运行到这里的时候,括号内期望得到一个boolean类型值,所以你给的值就会按照一定的规则被转为true或者false;

)

回到prompt这个方法的返回值这块

var promptString = window.prompt(text,defaultText);

说明:如果用户单击提示框的取消按钮,则返回 null。如果用户单击确认按钮,则返回输入字段当前显示的文本。

BOM提供的这个方法的返回值是一个字符串,可以使用!!promptString的方式获取这个字符串转为boolean值是false或者true

PHP中文网
if(url){
//url转化为bool类型如同执行Boolean(url)
//输入网址不为空if(url)返回true,执行{}内代码,点击取消Boolean(null)返回false,不执行代码
}
黄舟

null
undefined
0
空字符串
NaN
这5个值在JS中视为false

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号