您的位置:首页 > Web前端 > JavaScript

javascript里if语句的小括号里不能声明变量并赋值

2012-12-12 13:55 281 查看
直接抛出问题吧:

<html>
<head>
<script type="text/javascript" language="javascript">
window.onload = fun;
function fun(){
if(var n = false){
alert("判断输出正确");
}
else {
alert("判断输出错误");
}
}
</script>
</head>
<body>
</body>
</html>


当在页面中输入上述代码的时候,程序是不能够运行的,提示的错误是:语法错误。即

if(var n = false)


这行代码是有语法错误的。

问题分析:

显然,这里if语句的使用是不符合常规的语法的,使用这样的语句也没有什么意义,这里权当研究之用。

首先要说的是:

if语句后面的小括号里可以是任意的表达式,这是毋庸置疑的,使用的表达式的结果也不一定是Boolean类型,可以使任意的类型,只是当不是Boolean类型的时候,默认调用Boolean()方法进行转换就是了。

对声明语句的分析:

这里小括号里是声明语句,显然不是表达式,JavaScript引擎对声明语句的处理规则是:

创建这个Boolean类型的对象,并创建初始值,然后将这个对象添加到环境变量中。结束。也就是JavaScript引擎会对声明的变量或者函数进行预解析。

所以当执行到需要判断if语句中的表达式的值的时候,就不在执行小括号里的语句,就会导致语法错误了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐