javascript里if语句的小括号里不能声明变量并赋值
2012-12-12 13:55
281 查看
直接抛出问题吧:
当在页面中输入上述代码的时候,程序是不能够运行的,提示的错误是:语法错误。即
这行代码是有语法错误的。
问题分析:
显然,这里if语句的使用是不符合常规的语法的,使用这样的语句也没有什么意义,这里权当研究之用。
首先要说的是:
if语句后面的小括号里可以是任意的表达式,这是毋庸置疑的,使用的表达式的结果也不一定是Boolean类型,可以使任意的类型,只是当不是Boolean类型的时候,默认调用Boolean()方法进行转换就是了。
对声明语句的分析:
这里小括号里是声明语句,显然不是表达式,JavaScript引擎对声明语句的处理规则是:
创建这个Boolean类型的对象,并创建初始值,然后将这个对象添加到环境变量中。结束。也就是JavaScript引擎会对声明的变量或者函数进行预解析。
所以当执行到需要判断if语句中的表达式的值的时候,就不在执行小括号里的语句,就会导致语法错误了。
<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语句中的表达式的值的时候,就不在执行小括号里的语句,就会导致语法错误了。
相关文章推荐
- smarty内的赋值变量默认必须以"$"开头,且变量与括号之间不能有空格
- JavaScript基础 声明一个整形变量并赋值,两个整形变量进行加法运算
- Javascript变量声明:var语句
- if语句的在括号和中括号的正确赋值操作
- JavaScript基础 声明一个整形变量并赋值,两个整形变量进行加法运算
- javascript 直接创建对象与间接创建对象 私有函数不能访问this变量 是否使用var声明变量几个问题探讨
- 为何声明语句不能放到if后面
- JavaScript的数据类型和变量声明以及js的语句
- 使用extern声明外部定义的变量时不能赋值,只需声明变量
- 关于C/C++中switch语句case中变量不能初始化赋值的问题
- A SELECT statement that assigns a value to a variable must ... (向变量赋值的 SELECT 语句不能与数据检索操作结合使用 )
- Oracle中PL/SQL语句的变量、常量声明和赋值
- 关于一个STM32编译报错问题,变量声明不能在语句后面
- JavaScript中的变量声明早于赋值
- JavaScript-2变量、运算符、if else语句
- JavaScript将函数名赋值给变量与函数名加括号赋值给变量的区别
- JavaScript中变量的声明和赋值
- C++中,全局阈只能声明、初始化变量; 不能用于赋值、运算、调用函数等
- Javascript 函数声明 的优先级 高于 变量声明的优先级,但 不会 覆盖变量赋值
- javascript中函数声明、变量声明以及变量赋值之间的关系与影响