js部分
一、关键词和语法结构
1.区分大小写
2.注意 、// 单行注释 /* 多行注释 */
3.字面量(直接量 literal)比如:12 //数字 ,5.8 // 小数 , “hello” ‘hello’ //字符串,true
/js/gi //正则 ,null // 空 ,(X:1,y:2)字典 var dict = {"Jeremy":20,"Jimmy":30}; [ 1,2,3,4]; //数组。
4.标识符(变量)和保留字
1.分号可以省略但是可能会产生问题,js会自动补上;
例如:var y = x+f
(a+b).toString()
等价于
var y = x+f(a+b).toString();
二、类型,值和变量
1.原始类型 数字 字符串 和 布尔 (bool) null 空 undefine未定义的。
2.对象类型
3.类 Array Function Date RegExp Error
4.js解析器 中集成了垃圾回收
5.任意js的值都可以转为布尔值
例如:undefined
null
0
-0
NaN
""都被转换为false
6.包装对象
例如:var s = "hello"; //原始类型(没有方法)
s.len = 4 ; // 当调用原始类型的属性或方法的时候(原始类型是没有属性和方法的)
//只要引用了字符串的属性或方法,就会调用new
String(s) 把原始类型,包装成对象
// 以后调用s.len是调用String对象的属性和方法,一旦引用结束,新创建的临时对象会销毁
var n = s.len; // 此时为undefined
alert(n);
// 调用字符串布尔数字的属性或方法时,创建的临时对象。是包装对象
显示定义包装对象var S = new String("hello")
var s ="hello"; 是不同的
7.==和===的区别
如下:1、对于string,number等基础类型,==和===是有区别的
1)不同类型间比较,==之比较“转化成同一类型后的值”看“值”是否相等,===如果类型不同,其结果就是不等
2)同类型比较,直接进行“值”比较,两者结果一样
2、对于Array,Object等高级类型,==和===是没有区别的
进行“指针地址”比较
3、基础类型与高级类型,==和===是有区别的
1)对于==,将高级转化为基础类型,进行“值”比较
2)因为类型不同,===结果为false
8.类型转换
如下:var n = 17;
alert(n.toString(2)); //二进制10001
alert(n.toString(8)); //021
alert(n.toString(16)); //0x21
alert(n.toString(10)); alert(n.toString());
9.toString( ) 和 valueOf( )
var date = newDate(2011,1,3);
date.valueOf( ) 返回毫秒数代表的时间
10.js是动态类型 var n =10; 程序运行期间才会确定变量的类型
11.变量作用域
函数作用域和声明提前
函数内定义的变量声明自动提前到函数顶部
12.作用域链 scope chain
在不包含函数的函数体内,作用域链有两个对象,第一个是定义函数, 参数和局部变量的对象,第二
个是全局对象。
在一个嵌套函数体内,作用域链上至少有三个对象。定义一个函数时,它保存了一个作用域链。调
用函数时,它创建一个新的对象存储它的局部变量,并将这个对象添加到保存的那个作用域链
上,同时创建一个新的更长的表示函数调用作用域的“链”。对于嵌套函数每次调用外部函数时,内
部函数会重新定义一遍。每次调用外部函数的时候
作用域链是不同的。
创建对象的三种方法
1.对象 直接量
如下:
```
var empty = {};
var point = {x:0,y:0};
```