一、JavaScript的变量:
1、声明变量:
(1)通过var关键字声明变量;
<script type="text/javascript"> var a; var b; var c,d; </script>(2)可以声明变量的同时给变量赋值;
<script type="text/javascript"> var test='this is a test'; var test1=12; var test2=1.2; var test3=true; var test4=false; </script>(3)可以一次声明一个变量也可以一次声明多个变量;
<script type="text/javascript"> var a=b=c=d=e=1; </script>(4)如果只声明变量未对其赋值,默认值为undefined;
(5)如果变量重名则会产生覆盖;
<script type="text/javascript"> var a=1; a=33; </script>注意: 1)变量严格区分大小写;
<script type="text/javascript"> var username='hello'; var USERNAME='WORLD'; alert(username); alert(USERNAME); </script>2)变量名称不要包含特殊字符;
<script type="text/javascript"> var test_1=12; var test5='hello'; var _test='hello'; </script>3)变量名称最好遵循驼峰标记法或者下划线法;
<script type="text/javascript"> var firstName='hello';//小驼峰 var FirstName='world';//大驼峰 var first_name='name';//下划线法 </script>4)变量名称最好含义明确;
<script type="text/javascript"> var age=12; var name="hello"; var weight=96; </script>2、变量在内存中的存储和释放:
(1)收集方式;
(2)收集内容;
(3)回收算法;
二、JavaScript中的数据类型:
1、原始数据类型:
(1)数值型:JavaScript中的数值包含整数和浮点数,所有数值都是以双精度浮点型来表示;
1)十进制数;
<script type="text/javascript"> //十进制 var a=12; a=-23; a=12.3; a=.23e4; a=2e3; a=3E-2; </script>2)十六进制数;
<script type="text/javascript"> //十六进制 a=0xABCDEF; a=0X0; a=0Xfff; </script>3)八进制数;
<script type="text/javascript"> //八进制 a=0123; a=01234324; </script>4)特殊值:
①infinity无穷大:当一个数值或数值表达式的值超出了可表示的最大值的范围,将被赋值为infinity。可以有无穷大infinity,也可以有无穷小-infinity,无穷大的范围;
<script type="text/javascript"> //正无穷大Infinity a=1.79e310; a=-1.79e310; </script>②NaN:代表not a number,当一个undefined表达式的结果为数值型数据时,该数值型就是NaN值,NaN是唯一一个不能和自身做比较的值,可以通过isNaN()检测值是否为NaN;
<script type="text/javascript"> //NaN:Not a Number a=0/0; //通过isNaN()来检测是否是NaN值 alert(isNaN(a)); //NaN不能和自身比较 alert(NaN===NaN); </script>(2)字符串型:
1)定界符:""或者'';
<script type="text/javascript"> var str='this is a test'; var str1="hello world"; var str2="hello's"; </script>2)转义符:
①\n表示回车换行;
②\r表示换行;
③\t表示水平制表符(相当于点击了一次tab键);
④\"表示";
⑤\'表示';
⑥\\表示\;
<script type="text/javascript"> var str3='hello\'s'; var str4='a\nb\rc\td\"e\\f'; </script>
(3)布尔类型:true/false;
<script type="text/javascript"> var married=true; </script>2、复合数据类型:
(1)对象(object);
(2)数组(array);
(3)函数(function);
3、特殊数据类型:
(1)无定义数据类型undefined:undefined用来表示不存在的值或者尚未赋值的变量,对一个变量只声明不赋值或者赋予一个不存在的属性值(var test=String.n=NotExists;alert(test);),都会使这个变量的值为undefined;
<script type="text/javascript"> var test=String.NotExists; alert(test); </script>(2)空值null:表示什么都没有,相当于一个占位符,null和undefined的区别就是undefined表示变量未被赋值,而null表示变量被赋予了一个空值(null与undefined的值相等但是类型不同);
<script type="text/javascript"> var test=null; alert(test); //null alert(null===undefined) //false </script>
三、数据类型转换(可以使用if...else...语句来进行判断):
1、隐式转换:
(1)转换成布尔类型:
1)undefined转换成false;
<script type="text/javascript"> var a;//undefined->false if(a){ alert('true'); }else{ alert('false'); } </script>2)null转换成false;
<script type="text/javascript"> var a=null;//null->false if(a){ alert('true'); }else{ alert('false'); } </script>3)数值型0或者0.0或者NaN转换成false;
<script type="text/javascript"> //0 0.0 NaN->false var a=0; a=0.0; //NaN a=0/0; a=NaN; if(a){ alert('true'); }else{ alert('false'); } </script>4)字符串长度为0转换成false;
<script type="text/javascript"> var a='';//空字符串->false a='0';//非空字符串 a=' ';//非空字符串 if(a){ alert('true'); }else{ alert('false'); } </script>5)其他对象转换成true;
(2)转换成数值型数据:
1)undefined转换成NaN;
<script type="text/javascript"> var a=undefined;//undefined->NaN alert(1+a); </script>2)null转换成0;
<script type="text/javascript"> var a=null;//null->0 alert(1+a); </script>3)true转换成1或者false转换成0;
<script type="text/javascript"> var a=true;//true->1 var b=false;//false->0 alert(1+a); alert(1+b); </script>4)内容为数字转换成数字,否则转换成NaN;
<script type="text/javascript"> var a='12';//'12'->12 b='3hello';//'3hello'->NaN alert(a); alert(1*b); </script>5)其他对象转换成NaN;
<script type="text/javascript"> var a='true';//'true'->NaN alert(1*a); </script>(3)转换成字符串型数据:
1)undefined转换成"undefined";
<script type="text/javascript"> document.write(undefined);//'undefined' </script>2)null转换成"null";
<script type="text/javascript"> document.write(null);//'null' </script>3)NaN转换成"NaN";
<script type="text/javascript"> document.write(NaN);//'NaN' </script>4)true转换成"true",false转换成"false";
<script type="text/javascript"> document.write(true);//'true' document.write(false);//'false' </script>5)数值型转换成NaN、0或者与数值对应的字符串;
<script type="text/javascript"> document.write(NaN);//'NaN' document.write(123);//'123' </script>6)其他对象:如果存在这个对象则转换成toString()方法的值,否则转换为undefined;
2、显示转换:
(1)转换成数值:
1)number函数强制转换成数值:
①数值转换成原来的值;
②字符串:如果可以解析为数值则转换为数值,发否则转换成NaN或者0;
③true转换成1,false转换成0;
④undefined转换成NaN;
⑤null转换成0;
<script type="text/javascript"> var test=Number(12);//12 test=Number(232.3);//232.3 test=Number(true);//1 test=Number(false);//0 test=Number(undefined);//NaN test=Number(NaN);//NaN test=Number(null);//0 test=Number('3hello');//NaN test=Number('234');//234 alert(test); </script>2)转换成整型:praseInt(string,radix)函数,其中radix表示进制,默认情况为十进制;
注意: 1)当参数radix的值为0或者没有设置这个参数的时候,parseInt()会根据string来判断数字的基数;
2)当忽略radix,JavaScript默认数字的基数规则为:
①如果string以0x开头,parseInt()会把string的其余部分解析为十六进制;
②如果string以0开头,那么ECMAScript v3允许parseInt()的一个实现把其后的字符解析为八进制或者十六进制的数字;
③如果string以1~9的数字开头,parseInt()将把它解析为十进制的整数;
④字符串如果以合法字符开始,截取合法字符;
⑤开头和结尾的空格是允许的,中间的空格会被认为是不合法的字符;
⑥如果字符串的第一个字符不能被转换成数字,parseInt()会返回NaN;
⑦在字符串以"0"为开始时旧的浏览器默认使用八进制数,ECMAScript 5默认的是十进制的基数;
<script type="text/javascript"> var test=parseInt('123');//123 test=parseInt('234',0);//234 test=parseInt('0xabcdef');//11259375 test=parseInt('012344');//12344 test=parseInt(45,16);//69 test=parseInt('3hel23lo');//3 test=parseInt('true');//NaN test=parseInt(true);//NaN test=parseInt(' 35 6 a ');//35 alert(test); </script>3)转换成浮点型:praseFloat(string)函数返回转换成浮点型的值,该函数指定字符串中的首个字符是否为数字,如果是则对字符串进行解析,直到到达数字末端位置,然后以数字返回该数字而不是作为字符串;若首个字符不是数字,则返回NaN;
<script type="text/javascript"> var test=parseFloat('123.34abc');//123.34 test=parseFloat('123');//123 test=parseFloat('sdf');//NaN test=parseFloat(' 2e3a');//2000 alert(test); </script>注意:number函数将字符串转换为数值比praseInt函数严格得多,基本上只要有一个字符无法转换成数值,整个字符串就会被转换成NaN。
(2)转换成字符串:
1)通过String函数转换成字符串:
①数值转换成数值本身;
②字符串转换成字符串本身;
③true转换成"true",false转换成"false";
④undefined转换成"undefined";
⑤null转换成"null";
<script type="text/javascript"> var test=String(1234);//1234 test=String(23.34);//23.34 test=String('this is a test');//this is a test test=String(true);//true test=String(false);//false test=String(null);//null test=String(undefined);//undefined test=String(NaN);//NaN alert(test); </script>2)转换成字符串型:toString()函数;
(3)转换成布尔类型:通过boolean函数强制转换成布尔值:
1)0、-0、0.0转换成false;
2)NaN转换成false;
3)空字符串转换成false;
4)undefined转换成false;
5)null转换成false;
<script type="text/javascript"> var test=Boolean(0);//false test=Boolean(-0);//false test=Boolean(NaN);//false test=Boolean(undefined);//false test=Boolean('');//false test=Boolean(0.0);//false test=Boolean('0');//true alert(test); </script>