重温《js权威指南》 第2-3章

第二章 语法结构

        2.1 js区分大小写,html不区分大小写

        2.5 注意分号,如果没有分号,解释器会试图解析js,并在不能解析的地方加分号

第三章 值和变量

        js数据类型分两类:原始类型(数字,字符串,布尔值)和对象类型。

        两个特殊的原始值:undefined,null

        3.1 数字

            js不区分整型和浮点类型,所有数字都是浮点数值

            infinity 最大值  -infinity 最小值

            1/0=infinity ,-1/0=-infinity ,0/0=Nan

            js中的非数字值与任何值都不相等,所以 x==NaN无法判断x是否为NaN,用x!=x

            Math对象,包含常用数字操作

            Date对象,包含日期操作

        3.2 文本

            字符串的长度是其所含16位值的个数

            字符串的常用方法:charAt(),substring(),indexOf(),toUpperCase()

            Regex对象 模式匹配

        3.4 null和undefined

            null是一个特殊的对象,typeof(null)==object,含义是“无值”

            undefined 表明变量未定义,没有初始化。

                没有返回值的函数返回undefined

            null==undefined ,都表示“值的空缺”

        3.5 全局对象

            当js解释器启动时(任何web浏览器加载新页面时),它将创建一个新的全局对象,并给它一组初始属性:

                  全局属性,比如:undefined,infinity,NaN

                  全局函数,比如:isNaN(),parseInt(),eval()

                  构造函数,比如:Date(),Regex(),String(),Object(),Array()

                  全局对象,比如:Math,JSON

            可以通过别名“Global”来找到这些全局对象

        3.6 包装对象

var s="asd";
s.len=4;
alert(s.len);//undefined,因为s相当于一个临时对象,s.len执行完之后就释放了
var ss=new String("asd");
ss.len=4;
alert(ss.len);//4   ,因为ss是一个对象

        3.7 不可变的原始值和可变的对象引用

             js的原始值(undefined,null,布尔,数字,字符串)和对象有本质的区别,原始值不可变,注意字符串。

             原始值的比较是值的比较,对象的比较是引用的比较

        3.8 类型转换

字符串 数字 布尔 对象
undefined
null
"undefined"
"null"
NaN
0
false
false
throw TypeError
throw TypeError
true
false
"true"
"false"
1
0
  new Boolean(true)
new Boolean(false)
""
"1.2"
"one"
  0
1.2
NaN
false
true
true
new String("")
new String("1.2")
new String("one")
0
-0
NaN
Infinity
-Infinity
1
"0"
"-0"
"NaN"
"Infinity"
"-Infinity"
"1"
  false
false
false
true
true
true
new Number(0)
new Number(-0)
new Number(NaN)
new Number(Infinity)
new Number(-Infinity)
new Number(1)
{}(任意对象)
[](任意数组)
[9](一个数字元素)
['a'](其他数组)
function(){}

""
"9"
使用join方法

0
9
NaN
NaN
true
true
true
true
true
 

       

        3.8.3 对象转换为原始值

            1.默认的toString()方法

            2.特定版本的toString()。如,函数类返回这个函数的实现,日期类返回日期和时间,RegExp类返回正则表达式直接量

        3.10 变量作用域

            1.函数作用域替代块级作用域

            2.变量提前声明

var scope="全局"

function a(){

    alert(scope);//输出undefined

    var scope="局部";

    alert(scope);//输出"局部"
}

a();

             3.使用var声明一个全局变量时,这个属性是不可配置的无法delete.而用一个未声明的变量赋值的话,js会自动创建一个全局对象的可配置的属性

             4.作用域链

posted @ 2013-11-28 14:08  ζ老豆角  阅读(181)  评论(0编辑  收藏  举报