对于Javascript的而言没有数据类型的全部都是通过var来定义创建的。比如:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>javascript基础语法</title> <script type="text/javascript"> var a = 1; a="1"; alert(a); </script> </head> <body> </body> </html>
变量的作用域,如果你直接写在script这个标签中他的作用域就是整个页面,变量还可以定义在方法中,在这个方法中他的作用域就是这个方法的调用的开始到结束,在JavaScript中定义方法是通过function来定义方法的比如:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>javascript基础语法</title> <script type="text/javascript"> var a = 1; a="1"; alert(a); function method1(){ var b = "2"; alert(b); } </script> </head> <body> </body> </html>
如果你想在一个方法中调用另一个方法中定义的变量这个是会报错的(ReferenceError: b is not defined),因为JavaScript是一种动态的语言,它是一行一行解析的。
比如:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>javascript基础语法</title> <script type="text/javascript"> var a = 1; a="1"; alert(a); function method1(){ var b = "2"; alert(b); } function method2(){ var c = "3"; alert(c); alert(b); } </script> </head> <body> </body> </html>
好了,这就是变量的作用域和如何定义变量,但是你直接运行上述的代码是没有效果的,因为我们定义的方法还没有被调用,比如:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>javascript基础语法</title> <script type="text/javascript"> var a = 1; a="1"; alert(a); function method1(){ var b = "2"; alert(b); } function method2(){ var c = "3"; alert(c); alert(b); } </script> </head> <body> <input type="button" value="运行method1" onclick="method1()"/> <input type="button" value="运行method2" onclick="method2()"/> </body> </html>
补充一点就是:当在函数的内部没有使用var来声明变量的时候,这个变量会作为全局变量来声明,所以一定要在函数中使用var 来声明一个变量,不然到最后会出现莫名其妙的错误。比如:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>javascript基础语法</title> <script type="text/javascript"> // var a = 1; // a="1"; // alert(a); // function method1(){ // // alert(b); // } function method2(){ b = "2"; alert(b); } function method3(){ alert(b); } </script> </head> <body> <input type="button" value="运行method1" onclick="method1()"/> <input type="button" value="运行method2" onclick="method2()"/> <input type="button" value="运行method3" onclick="method3()"/> </body> </html>
下面介绍一下JavaScript中变量的类型,以及强制类型的转换等问题:比如
变量的类型有Number,String,Array,Date常用的类型。当你定义一个变量的时候想看这个变量是什么类型就用关键字(typeof 变量名字)。Java强制类型的转换(Number)a,然而在js中是通过Number(a).如果强制转换一个非数字的值为Number时候会得到一个NaN的值,转换成整数的时候还可以用parseInt(a),这个函数就是可以将字符串开头的的几个数字转换成int,如果开头的不是数字,那就得到一个NaN的值。比如:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>javascript基础语法</title> <script type="text/javascript"> var a = "a"; //alert(typeof a); a = "11"; alert(Number(a)+1); var b = "b"; alert(Number(b)); var c = "123c"; alert(parseInt(c)); var d = "d123"; alert(parseInt(d)) </script> </head> <body> <input type="button" value="运行method1" onclick="method1()"/> <input type="button" value="运行method2" onclick="method2()"/> <input type="button" value="运行method3" onclick="method3()"/> </body> </html>
对于数组等对象而言显示的结果是object,而不是Array,我们可以通过array as instanceof Array来准确判断array是不是Array的实例如果是返回true,对于布尔类型:true和false中,在js中非0就是true,特别注意:NaN是false.当一个变量没有定义的值的时候他的类型是undefined类型,undefined类型是false比如:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>javascript基础语法</title> <script type="text/javascript"> var array = ["a","b",1,2,3]; alert(typeof array); alert(array instanceof Array); var size; alert(size+"1"); </script> </head> <body> <input type="button" value="运行method1" onclick="method1()"/> <input type="button" value="运行method2" onclick="method2()"/> <input type="button" value="运行method3" onclick="method3()"/> </body> </html>
特别注意:在js中除了NaN,undedined,0其他的都是true.