JavaScript是一种动态的,弱类型的,基于原型的,面向对象的解释型语言。函数是JavaScript中的头等公民。
一、语句:
1.if语句
if(dayOfWeek===6){
}
else if(dayOfWeek===0){
}
else{
}
2.switch语句
switch (dayOfWeek){
case 6:
break;
case 0:
break;
default:
break;
}
switch语句将switch表达式的值和所有指定的Case表达式进行精确匹配(===)。当找到一个匹配时,执行匹配的case从句中的语句。如果没有找到任何匹配,则执行可选的default语句。
3.while语句
while (count<=10){
count++;
}
4.do/while语句
do{
count++;
}while (count<=10);
5.for语句
}
6.for/in语句
var customer={Name:"Julius", Age:30};
for (var propName in customer){
if(customer.hasOwnProperty(propName)){
}
}
通常需要调用hasOwnProperty(propName)方法来确定这个属性名是该对象的成员,还是从其原型链里找到的。
7.try/catch语句
}
catch(e){
}
8.throw语句
name:'ArgumentOutOfRangeError',
message:'year must > 0'
}
9.return语句
return语句会使一个函数提前返回。它也可以指定要被返回的值。如果没有指定返回表达式,那么其值是undefined。
二、运算符
. [] () 属性存取及函数调用
delete new typeof + - ! 一元运算符
* / % 乘法,除法,取模
+ - 加法/连接,减法
>= <= > < 不等式运算符
=== !== 等式运算符
&& 逻辑与
|| 逻辑或
?: 三元运算符
typeof运算符产生的值有'number'、'string'、'boolean'、'undefined'、'function'、'object'。如果运算数是一个数组或null,结果是'object'。
检测null:
if(value === null){
}
检测数组:
var isArray=function(obj){
return Object.prototype.toString.call(obj)==="[object Array]";
};
三、类型:
1.数字
JavaScript只有一个单一的数字类型。他在内部被表示为64位的浮点数。
特殊数值:
NaN 非数字的特殊值
Infinity 无穷大的特殊值
2.字符串
JavaScript字符串是一个由16位的Unicode字符组成的序列。字符串字面量可以被包围在单引号或双引号中。
字符串转义:
\" \' \\
\b 退格符
\f 换页符
\n 换行符
\r 回车符
\t 制表符
\uXXXX 由4位16进制XXXX指定的Unicode字符
3.布尔值
布尔值只有2个值:true和false。
下列值被当作假值:
false
null
undefined
空字符串''
数字0
数字NaN
4.null
JavaScript中null是一个特殊的值,表示“无值”。
5.undefined
JavaScript中undefined是一个特殊的值。在使用一个未声明的变量,或已声明但还未赋值的变量,以及并不存在的对象属性时,将返回undefined。
6.对象
brand:"Honda",
color:"Red",
run:function(){
//run
}
};
var value=car.brand;
JavaScript中的对象是可变的键值集合。对象是属性的容器,其中每个属性都拥有名字和值。属性的名字可以是包括空字符串在内的任意字符串。属性值可以是除undefined值之外的任何值。
原型:
//stop
};
car.stop();
每个对象都连接到一个原型对象,并且它可以从中继承属性。原型连接在更新时是不起作用的。它只有在检索值的时候才被使用。
模块化:
App.employee={
name:"Joyce"
}
App.customer={
name:"Jason"
}
7.函数
return a+b;
};
add(1+2);
JavaScript中函数就是对象。函数可以被定义在其它函数中。一个内部函数可以访问包围它的外部函数的参数和变量(this和arguments除外)。这被称为闭包。
闭包:
return {
getBrand:function(){
return brand;
},
getColor:function(){
return color;
}
};
};
var myCar=car("Honda","Red");
myCar.getBrand();
函数化继承:
var that = {};
that.getName = function () {
return spec.name;
};
that.says = function () {
return spec.saying || '';
};
return that;
};
var myMammal = mammal({name: 'Herb'});
var cat = function (spec) {
spec.saying = spec.saying || 'meow';
var that = mammal(spec);
that.purr = function (n) {
//purr
};
that.getName = function () {
return that.says() + ' ' + spec.name + ' ' + that.says();
};
return that;
};
var myCat = cat({name: 'Henrietta'});
8.数组
var value=colors[0]; //"Red"
数组和对象一样是键值集合。所不同的是,数组可以用整数做为属性名。数组还提供了一套非常有用的内置方法。
每个数组都有一个length属性。length属性的值是这个数组的最大整数属性名加上1。它不一定等于数组里的属性的个数。
9.正则表达式
numberRegex.test(1.2); //true
正则表达式分组:
() 捕获型分组
(?:) 非捕获型分组
正则表达式转义:
\\ \/ \[ \] \( \) \{ \} \? \+ \* \| \. \^ \$
\f 换页符
\n 换行符
\r 回车符
\t 制表符
\uXXXX 由4位16进制XXXX指定的Unicode字符
\d 匹配一个数字(等同于[0-9])。\D则表示与其相反(等同于[^0-9])
\s 匹配Unicode空白符的一个不完全子集(等同于[\f\n\r\t\u000B\u0020\u00A0\u2028\u2029])。\S则表示与其相反
\1 捕获型分组1的引用(\2依此类推)
正则表达式类转义:
\- \\ \/ \[ \] \^
\b 退格符
\f 换页符
\n 换行符
\r 回车符
\t 制表符
\uXXXX 由4位16进制XXXX指定的Unicode字符
\d 匹配一个数字(等同于[0-9])。\D则表示与其相反(等同于[^0-9])
\s 匹配Unicode空白符的一个不完全子集(等同于[\f\n\r\t\u000B\u0020\u00A0\u2028\u2029])。\S则表示与其相反
正则表达式量词:
? 匹配0或1次(同{0,1})
* 匹配0或多次(同{0,})
+ 匹配1或多次(同{1,})
{n} 匹配n次
{n,} 匹配至少n次
{n,m} 匹配至少n次,但不能超过m次
正则表达式标志:
g 执行全局匹配(所有匹配)
i 执行不区分大小写匹配
m 执行多行匹配(^和$能匹配行结束符)
10.JSON
//ECMAScript 5
var persons=JSON.parse('[{"name":"Jason","born":1980,"isSingle":true},{"name":"Jason","born":1980,"isSingle":true}]');
var str=JSON.stringify(persons);
JSON是一种轻量级的数据交换格式,它基于JavaScript的对象字面量表示法。JSON有6种类型的值:对象、数组、字符串、数字、布尔值和特殊值null。