JavaScript基础总结:
基础语法:语法
在ECMAScript中,定义 是用 var ,例如: var name="zhangsan"; ,这样定义变量就会导致变量没有准确的数据类型,可以随意的转换,在ECMAScript中,
每行的代码可以不用 ( ; ) 号来结束 例如:
var name="zhangsan"
var password="admin";
这两句都不会用问题,ECMA会把拆行代码的结尾看作该语句的结尾。
变量
在ECMAScript中,定义变量有两个地方需要注意:
(1)ECMAScript 在定义变量的时候可以不去初始化 :var test; 这种事合法的
(2)在ECMAScript中变量声明不是必须的: var test1="hello"; test2=test1+"world"; alert(test2); 输出结果是 helloworld
解释:ECMAScript 的解释程序遇到未声明过的标识符时,用该变量名创建一个全局变量,并将其初始化为指定的值。
数据类型
在ECMAScript中,数据类型分为原始数据类型和引用数据类型,其中,原始数据类型分为:Undefined、Null、Boolean、Number、String。String类型,在
ECMAScript中和别的语言不同,被当成了原始数据类型,有着固定的长度,存储在栈中。
类型转换
toString()的使用
在ECMAScript中定义的所有对象都有toString()方法,其中Boolean类型的toString()方法,输出的内容由变量值决定,Number类型的toString()方法,比较特殊,
分为默认模式和基模式,默认模式事例:var num1=10; alert(num1); var num2=10.1; alert(num2); 输出结果全是10, 基模式事例:var num1=10; alert(num1.toString(2)); number这种带参数的toString(),输出将采用参数的值,作为进制进行转换,也就是输出结果将是 num1的二进制
数组toString(), var arr=new Array("zhangsan","lisi","wangwu") ; alert(arr.toString()); 输出 zhangsan,lisi,wangwu
parseInt()使用
普通模式:使用parseInt()方法,首先判断变量的首字符是不是一个有效数字,如果不是,则返回NaN,如果是则看后面找到不是有效字符的前面,进行截取 返 回,如果遇到 10.6 这种情况,会返回10,对于整数来说,小数也不是有效字符。
基模式:var iNum1=paserInt("10",2); 传入第二个参数,会根据第二个参数传入的值,进行进制转换, 本事例将返回 一个2进制的数字
parseFloat()使用
parseFloat 没有进制转换的基模式,其余和parseInt()大体一致,但是 遇到 一位小数的时候,将返回一位小数,遇到二位小数将第二个小数之前部分进行截取。
强制类型转换
Boolean() 函数
var b1=Boolean(" "); 空字符串则返回false
var b1=Boolean("hello"); 非空字符串 true
var b1=Boolean(50); 非0数字 返回true
var b1=Boolean(0); 0 返回false
var b1=Boolean(null); 返回false
var b1=Boolean(new Object()); 对象返回true
Number()函数
Number(true); 返回1
Number(false); 返回0
Number(null); 返回 0
Number(undefined); 返回NaN
Number("1.2.3"); 返回NaN
Number(new Object()); 返回NaN
String()函数
String()函数,几乎所有的类型都可以转换成字符串,不过其中需要注意:var s1=new String(null); 返回null ,var s1=null; alert(s1.toString()); 会报错
引用数据类型
var obj=new Object(); 这种没有参数的对象代码可以简写成 var obj=new Object;
&& || ! 的含义
1. && 的工作方式:从第一个开始,遇到值为false的表达式(fasle、null、undefined、0、NaN、‘’)则返回此表达式,否则返回最后一个
表达式(注意,这边所说的表达式不一定为boolean类型)
2. || 的工作方式:从第一个开始,遇到值为true的表达式(与上面&&相反的其他情况)的返回此表达式,否则返回最后一个表达式
3. ! 的工作方式:对表达式的值取非(注意不是对表达式)。
Boolean引用类型难点
var booleanfalse=new Boolean(false);
alert(booleanfalse && true);
这个表达式返回的值将是true。如果单纯理解 && 工作方式,那么将是 如果booleanfalse 如果为false,则返回第一个表达式,如果为true,如果 为true,则返回第二个表达式,为什么这里运行后的结果变为了true?
首先:这里有一个问题, booleanfalse && true 进行比较,booleanfalse 是一个引用数据类型,是一个对象,在这里进行和一个Booleand 的原始数据类型进行比较,那么booleanfalse 会进行一个自动转换,由对象转换为原始数据类型 ,参照上面对象转换Boolean 类型的原则。 将返回true.所以在比较中booleanfalse 的实际值是true.
var booleanfalse=new Boolean(false);
var b1=booleanfalse && true;
var b2=true && booleanfalse;
alert("b1="+b1+"...b2="+b2);
这里又会产生一个疑惑点,为什么得到得结果确是 b1=true b2=false 在 var b2= true && booleanfalse; 在程序运行的时候 当看到 && 表达式 前面的时候,是一个true,所以 b2的结果是一个对象 也就是booleanfalse,当进行alert 输出的时候,程序做了一部处理, 对象.toString()处理, 在Boolean 引用数据类型中 ,对toString()进行了覆盖处理,返回字符串true和false,所以这里b2输出的结果将是false,但是b2本身却是个对象 。