代码改变世界

关于js的核心笔记--需要注意的地方都在这里啦,有测试代码

2012-03-05 17:22  @影子@  阅读(242)  评论(0编辑  收藏  举报

一、说明

参考blog:http://www.cnblogs.com/xiaofu/articles/1613463.html

二、记法结构

2.1字符集  Javascript程序用的是Unicode字符集编码。

2.2大小写敏感

2.4可选的分号

2.7标识符   第一个字母必须是字母、下划线或美元符号($)!

三、数据类型和值

3.1数字

Javascript不区整型值和浮点型数值。在Javascript中,所有的数字都是由浮点型表示的。

       3.1.1,3.1.2整型直接量、八进制和十六进制的直接量

              十六进制直接量是以”0x”或”0X”开头,而八进制是以数字0开头。

在ECMAScript标准中不支持八进制的直接量,但是Javascript的某些实现是允许八进制格式的整型直接量的。所以一般最好不要使用以0开头的整型直接量。

       3.1.3浮点直接量

              例如

              3.14

              234.342

              .342424

              2.32e23

              1.23424E-32

       3.1.6特殊的数值

              当一个算术运算(如0除0)产生了未定义的结果或错误时,就会返回一个特殊的非数字的值,为NaN。这个数字值和任何数值都不相等,包括它自己在内,所以需要一个专门的数字来检测IsNaN()来检测这个值。

       特殊数值常量

      NAN  

       Infinity  无穷大

       Number.MAX_VALUE

       Number.MIN_VALUE

       Number.NaN

       Number.POSITIVE_INFIITY

       Number.NEGATIVE_INFITY

       这是特殊的常量都是在运算时可能产生的,用IsNaN()或isFinite()等函数来检测。

3.2字符串

       3.2.1字符串直接量

              字符串是由单引号或双引号括起来的Unicode字符. 单引号可以含有双引号,双引号可以含有单引号

       3.2.2字符串直接量中的转义序列

              \0 \b \t \n \r \v \f  \’  \”  \\ \uXXXX(四位十六进制的Unicode字符)    \xXX由两位十六进制指定的latin-1字符

var a = "Does Ansel's cat love Tanya's Dog?";
alert(a);
var b = 'Does Ansel\'s cat love Tanya\'s Dog?';
alert(b);

  3.2.3字符串使用

              可以用(+)来连接字符串

       3.2.4数字转换为字符串

              Var number=100;

              Var s=number.toString();

              还可以指定转换的基数,

              Var s=number.toString(16);

              还有三个函数可以精确指定转换后的数字格式,toFixed(),toExponential(),toPrecision();

var number=100;
alert(number.toString()+"-"+number.toString(16)+"-"+number.toFixed()+"-"+number.toExponential()+"-"+number.toPrecision());
//100-64-100-1e+2-100

       3.2.5字符串转换为数字

              当把一个字符串用于数字环境中,它也会自动地转换为一个数字,

              Var t=”21”* “2”;

              利用这一优点,只要把一个字符串减去0就可以将其转换为一个数字。

              Var t=string_value-0;

              ParseInt()和ParseFloat(),这两个函数可以从字符串开始处转换和返回任何的数字,忽略或舍去非数字部分。

              ParseInt()甚至可以接受另一个参数来指定要解析的数字的基数。合法的范围在2至36之间。

              ParseInt(“012”,2);

              ParseInt(“0x23”);//默认返回10进制

              这两个函数不能把指定的字符串转换为数字,它们会返回NaN.

              ParseInt(“ele”);//返回NaN

3.7Null

       Null被看作对象类型的一个特殊值,即代表“无对象”的值。

3.8undefined

       使用了已经声明但还没有赋值的变量时,又或者使用了一个并不存在的对象属性时,返回的就是这个值。注意这个特殊的undefined值不同于null。但是==运算符却将两者相等的。

3.11Error对象

       当运行发生错误时,Js会抛出某个类的对象。

3.12类型转换小结

       不同的值在不同的环境运行时所转换成的值

       值                         字符串           数字                                   布尔              对象

       未定义的值           “undefined”    NaN                                    false               Error

       Null                      “null”             0                                        false               Error

       非空字符串           不变              字符串中的数字值或NaN   true                String

空字符串              不变              0                                        false               String

       0                          “0”                不变                                   false               Number

       NaN                      “NaN”            不变                                   false               Number

       无穷                     “InFinity”       不变                                   true                Number

       负无穷                  “-InFinity”     不变                                   true                Number

       任意其他的数字    数字字符串值 不变                                 true                Number

       True                      “true”             1                                        不变              Boolean

       False                     “false”            0                                        不变              Boolean

       对象                     toString()              valueOf(),toString(),或NaN  true                   不变

       注:对于对象的转换,当在一个数字环境时JS首先调用该对象的ValueOf()方法,如果这个方法返回一个基本类型的值,这个值会被使用,然而在大多数情况下,valueOf()方法返回的是对象自己,在这种情况下,JS先使用toString()方法把对象转换为一个字符串,然后再试图把该字符串转换为一个数字。

       3.13,3.14基本数据类型的包装对象

              跟C#或JAVA里的包装对象是一样的,比如用一个字符串变量时使用了一个字符串对象的方法或属性,JS会为这个字符串值内部创建一个String包装对象.String对象替代了原始的字符串值。注意,这个对象中只是瞬时存在的,在用完以后就没有用了,系统会把它丢弃。

       Var s=”asdf”;

       Var len=s.length;//用长度属性。

注意:JS中函数的方法call(),apply(),可能还有其它的方法能被字符串常量,数字,布尔类型甚至null,undfined调用,为什么?因为包装对象啊!!!在这两个函数里面需要对象所以就把常量包装成对象了来调用对象,用完就丢掉!!jQuery中的的each方法循环对象的属性时就是用的这个特性。

3.15传值和传址

       基本类型为Null,Undefinded,布尔型,数字。

引用类型为数组、函数、对象。

JS字符串是通过传址来复制和传递的,而它们是通过传值来比较的。可以说是既能是基本类型又是引用类型!