//是否是草稿
var is_draft ='<%=save%>';
alert (is_draft)
alert(!is_draft)
//是否是草稿
var is_draft ='<%=save%>';
alert (is_draft)
alert(!is_draft)
同意linong的说法,如果这里is_draft ='<%=save%>';
被实体替换后,is_draft
的值类型是string
,但值可能是false
,所以第一个alert输出是false
,第二个alert输出时先对String转换判断不为空字符,所以为真,再取反为false
,所以输出还是为false
。
这种问题是bug产生的常见原因之一。
要根据<%=save%>
可能的值范围实现更安全的代码,比如这里如果是is_draft =<%=save%> ;
则可能更安全,因为<%=save%>
本身就存储的是布尔值的。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
第一次是字符串类型,第二次是布尔类型咯。
其实你可以换另一种写法