文章目录
  1. 1.使用严格模式
    1. 1.1.定义
    2. 1.2.规定
    3. 1.3.注释
    4. 1.4.语句
    5. 1.5.关键字&保留字
  2. 2.数据类型
    1. 2.1.变量
    2. 2.2.数据类型分类
    3. 2.3.typeof
  3. 3.操作符
    1. 3.1.一元操作符
    2. 3.2.位操作符
    3. 3.3.布尔操作符
    4. 3.4.四则运算操作符
    5. 3.5.关系操作符
    6. 3.6.条件操作符
    7. 3.7.赋值操作符
    8. 3.8.逗号操作符
  4. 4.语句
    1. 4.1.条件
    2. 4.2.循环
    3. 4.3.分支
    4. 4.4.break 与 continue
    5. 4.5.with语句
    6. 4.6.label语句
  5. 5.函数
    1. 5.1.定义
    2. 5.2.默认返回值
    3. 5.3.保留字 arguments
    4. 5.4.参数个数
    5. 5.5.特性
  6. 6.变量
    1. 6.1.定义
  7. 7.ECMAScript 引用类型
    1. 7.1.Object 类型
    2. 7.2.基本包装类型
    3. 7.3.Global 对象
    4. 7.4.Math 对象
  8. 8.数组
    1. 8.1.初始
    2. 8.2.检查
    3. 8.3.转换与排序
    4. 8.4.栈和队列操作
    5. 8.5.其它

使用严格模式

定义

具有作用域特点

  • 全局
1
2
"use strict";
...

-局部

1
2
3
4
(function(){
  "use strict";
  ...
})();

规定

定义变量必须用 var 属性名、参数名 不能重名 禁用八进制表示数字,整数的第一位如果是0,表示这是八进制数 不能删除变量 delete 保留字不能用作标识符 禁止使用with语句 创设eval作用域 禁止this关键字指向全局对象 禁止在函数内部遍历调用栈 函数必须声明在顶层

这里可以推荐大家阅读下阮老师的博文 阮一峰 - Javascript 严格模式详解

注释

  • 单行用 \

  • 多行用

/* … */

/* * * * */

语句

一行一个语句 分号结尾 大括号表示代码段

关键字&保留字

  • 参考 ECMA-262 中定义

数据类型

变量

  • 弱类型 可以互相转换
  • 性质 包存值的占位符
  • 定义 用var来声明

数据类型分类

简单数据类型

  • Undefined 没有对象
  • NULL 空指针
  • String

单引号 双引号 完全相同 都可以转义 反斜杠 \ ,换行 \n 整个代码上下文统一

  • Number

Number.MAX_VALUE Number.MIN_VALUE

检查是否能表示 isFinite(13213213)

var n = 1e

NaN 非法数字 isNaN(‘aaa’) 是否非法数字 true Number(‘1231’) 数字转换

e 是科学计数法 var y=123e5; // 12300000 var z=123e-5; // 0.00123

parseInt 转整形 parseFloat 转浮点

  • Boolean

复杂数据类型

  • Object

表示值或函数方法 无序

var objs = new Object(); Object {}

var objs = {};

typeof

var a = 1e5 typeof(a) “number”

操作符

一元操作符

++ – 前置 先计算和赋值一起操作 后置 计算后再赋值

int n = 1 ++n 2 n++ 2 n 3

位操作符

布尔操作符

与 或 非

1
2
3
4
5
6
7
alert(1&&2)的结果是2
只要“&&”前面是false,无论“&&”后面是true还是false,结果都将返“&&”前面的值;
只要“&&”前面是true,无论“&&”后面是true还是false,结果都将返“&&”后面的值;

alert(0||1)的结果是1
只要“||”前面为false,不管“||”后面是true还是false,都返回“||”后面的值。
只要“||”前面为true,不管“||”后面是true还是false,都返回“||”前面的值。

四则运算操作符

加、减、乘、除、求模

关系操作符

大于 等于 不等于 等于 全等于 === 会比较类型 全不等 !==

条件操作符

var a = (a>b ? a : b)

赋值操作符

= += -= *= /= %= 位运算 «= 、»= 、»>=

逗号操作符

var a = 1, b = 2, c= 3

语句

条件

if(){}else{}else if{}

循环

while(true){} do{}while(true) for(var i =0;i<=numMax;i++){} for(var key in 对象或数组){}

分支

switch(表达式、变量或值){ case 值或表达式: … break; }

break 与 continue

with语句

1
2
3
with(req.session.user){
  log(name,sex);
}

label语句

1
2
3
4
5
6
7
8
9
10
var itemsPassed = 0;
var i, j;

top:
for (i = 0; i < items.length; i++){
    for (j = 0; j < tests.length; j++)
        if (!tests[j].pass(items[i]))
            continue top;
        itemsPassed++;
}

函数

定义

1
2
3
4
5
6
7
8
9
10
11
12
13
function sum(a,b){
  console.log('sum : ', a+b);
}

var sum2 = new Function(
  'a',
  'b',
  'console.log('sum : ', a+b);'
);

var sum3 = function(a,b){
  console.log('sum : ', a+b);
};

默认返回值

1
Undefined

保留字 arguments

1
2
3
4
5
function testArg(){
  console.log('arguments: ', arguments);
}

testArg(1,2,3,4,5);

参数个数

1
2
sum.length
2

特性

匿名 回调

变量

定义

var 方式是局部 默认是全局(不推荐)

ECMAScript 引用类型

Object 类型

1
2
3
var obj = {name:'aaa'}
obj.name
obj['name']

基本包装类型

基本类型自带的方法 如 String.toString()

Global 对象

属性 infinity nan undefined null

方法 eval() isFinite() isNan() …

Math 对象

数学对象 Math.PI Math.E Math.SQRT2 Math.SQRT1_2 Math.min() Math.max() Math.random()

数组

初始

1
2
3
var arr = new Array(3);
var arr = new Array('a', 'b', false);
var arr[4] = 'ab';

检查

1
2
arr instanceof Array
Array.isArray(arr)

转换与排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
var obj = {a:1, b:2, c:3, d:false};
Object.keys(obj);
Object.keys(obj).length;

// 分割
var str = 'a b c d';
str.split(' ');

// 打印
str.toString();
a,b,c,d
str.join('|');
a|b|c|d

// 排序
var arr = [11,2,33,66,55];
function compareAB(a,b){
  if(a > b){
    return 1;
  } else if(a === b){
    return 0;
  }else if(a < b){
    return -1;
  }
}
arr.sort(compareAB);
console.log(arr);

栈和队列操作

1
2
3
4
5
6
7
8
9
// 压入,加在尾端
arr.push(100,101);
// 弹出,尾端出栈
arr.pop();

// 队列,头部弹出
arr.shift();
// 队列,头部压入
arr.unshift(222);

其它

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// concat 连接另一个数组,加入尾端
var arr1 = ['a1','a2'];
arr.concat(arr1)

// slice 取出
arr.slice(2,5); // 从2位置取到5,取出3个

// splice 删除、插入
arr.splice(1,1); // 从1位置删除1个
arr.splice(1,0,'a3','a4'); // 从1的位置 删除0个 插入 a3 a4

// 定位
indexOf();// 头部开始
lastIndexOf();// 尾部开始

// 加工函数,需要传入自定义函数
// every() 所有的成员都返回true 才是 true
arr.every(function(m){
  return m > 10;
});

// some() 有一个是true 就是 true
arr.some(function(m){
  return m > 10;
});

//filter() 返回值为true的组成一个新数组
arr.filter(function(m){
  return m > 10;
});

//map() 对数据处理 返回新数组
arr.map(function(m){
  return m + 10;
});

//forEach() 数组循环遍历
arr.forEach(function(m){
  console.log(m);
});

// reduce() prev 是上次的return 结果
arr.reduce(function(prev, cur, index, arr){
  return prev + cur;
});

// reduceRight() 是反序列操作

我的博客

文章目录
  1. 1.使用严格模式
    1. 1.1.定义
    2. 1.2.规定
    3. 1.3.注释
    4. 1.4.语句
    5. 1.5.关键字&保留字
  2. 2.数据类型
    1. 2.1.变量
    2. 2.2.数据类型分类
    3. 2.3.typeof
  3. 3.操作符
    1. 3.1.一元操作符
    2. 3.2.位操作符
    3. 3.3.布尔操作符
    4. 3.4.四则运算操作符
    5. 3.5.关系操作符
    6. 3.6.条件操作符
    7. 3.7.赋值操作符
    8. 3.8.逗号操作符
  4. 4.语句
    1. 4.1.条件
    2. 4.2.循环
    3. 4.3.分支
    4. 4.4.break 与 continue
    5. 4.5.with语句
    6. 4.6.label语句
  5. 5.函数
    1. 5.1.定义
    2. 5.2.默认返回值
    3. 5.3.保留字 arguments
    4. 5.4.参数个数
    5. 5.5.特性
  6. 6.变量
    1. 6.1.定义
  7. 7.ECMAScript 引用类型
    1. 7.1.Object 类型
    2. 7.2.基本包装类型
    3. 7.3.Global 对象
    4. 7.4.Math 对象
  8. 8.数组
    1. 8.1.初始
    2. 8.2.检查
    3. 8.3.转换与排序
    4. 8.4.栈和队列操作
    5. 8.5.其它