目录
严格模式
字符串 " use strict";
严格模式按作用域分为全局严格模式, 局部(函数内)严格模式;
开启严格模式 要求:必须在当前作用域的第一行(除了注释之外);
严格模式下,注意以下几点:
- 声明变量必须使用var ;
- 不能删除已经定义好的变量(delete 变量);
严格模式下全局作用域中函数中的this 是undefined。
- 函数的形参不可以重名 ;
- 不可以使用八进制 0开头的;(但是可以0o开头);
- 不可以使用关键字,保留字作为变量名 ;
- 不能使用eval函数(eval是一个函数 它可以把字符串当做代码执行;严格模式下 eval依然可用 只是为eval单独生成了一个作用域;var num = eval('1 + 2'); console.log(num) // 3);
- 不能使用arguments.【i】;
- 不能使用with (混淆了变量和属性的边界)
ES5新增的数组的方法:
数组方法(都是遍历数组的新方法)
(回调函数里的形参不必都写3个,后两个可以省略不写)
forEach (遍历数组)
arr.forEach(handler);//参数是一个函数,这个函数有三个参数,分别是 数组成员,下标,原数组;
handler(value, index, self): 处理函数(是一个回调函数)
value: 每个数组成员;
index: 索引号;
self: 原数组;
var arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g'] arr.forEach(function(value, index, self) { console.log(value, index, self) })
输出值是:
map 映射
map()
方法创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值。返回值 return : 一个由原数组每个元素执行回调函数的结果组成的新数组.
arr.map(handler);
handler(value, index, self): 是处理函数
value: 成员
index: 索引
self: 原数组
返回值:return 新数组 取决于handler的返回值
输出结果:var arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g'] var arr1 = arr.map(function (value, index, self) { return value + "1"; }) console.log(arr1)
filter 过滤器 (遍历数组,起到筛选作用)
通过return进行判断, 会返回一个新数组,所以要定义一个变量接收;
arr.filter( handler);
handler(value, index, self): 处理函数(是个回调函数)
value: 每个数组成员
index: 索引号
self: 原数组
返回值:返回一个新数组, 取决于handler的返回值;
var arr = [ { type: "大菜", name: "鱼香肉丝", price: 10 }, { type: "大菜", name: "红烧肉", price: 10 }, { type: "大菜", name: "香辣粉", price: 10 }, { type: "中菜", name: "小炒肉", price: 13 }, { type: "中菜", name: "云吞", price: 14 }, { type: "小菜", name: "雪糕", price: 15 }, { type: "小菜", name: "黄瓜", price: 16 } ] var arr1 = arr.filter(function(value) { return value.price < 13 }) console.log(arr1)
some 方法
遍历数组,查找数组中是否有满足条件的元素;return返回的是布尔值;
找到立即中断循环,返回true; 否则,找不到,返回false;
arr.some(handler)
handler(value, index, self): 是处理函数(回调函数)
value: 成员
index: 索引
self: 原数组
返回值:布尔值 取决于handler的返回值,如果有任何一个符合条件的,为真; 都不符合,为假。
<script> var arr = [10, 12, 43, 68, 96, 34, 23]; var arr1 = arr.some(function (a) { return a > 36; }); console.log(arr1); </script>
every 方法
循环数组内的所有元素,检测每个元素是否都能通过某个指定函数的检测。它返回一个布尔值。
arr.every(handler)
handler(value, index, self): 处理函数
value: 每个成员
index: 索引号
self: 原数组
返回值:布尔值 取决于handler的返回值,如果全部符合条件的,为真,有任一不符合,为假。
若收到一个空数组,此方法在一切情况下都会返回
true
。<script> var arr = [12, 33, 23, 56, 5]; var arr1 = arr.every(function (value, index, selft) { return value > 4; }); console.log(arr1); //true ------------------------------------------------- //空数组任何时候,every方法都为true; var newArr = []; var newArr1 = newArr.every(function (a, b, c) { return a > 123; }); console.log(newArr1); //true </script>