ECMA5新增语法与题
严格模式
- 严格模式:写在哪个作用域下,在哪个作用域下生效;尽量注意不要严格模式写在全局。
- "use strict"
- 使用严格模式的好处:
- 全局变量声明时,必须加var
- 函数内重名属性
- arguments对象不允许被动态改变
当执行以下代码时
function show(num1, num2){
num1 = "hello";
document.write(num1 + ", " + num2 + "<br/>");
document.write(arguments[0] + ", " + arguments[1]);
}
show(10, 20);
结果是
如果使用严格模式 **“use strict”**结果是
- 新增保留字:implements, interface, let, package, private, protected, public, static, yield
ECMA5新增数组方法
- indexOf()
- 格式:数组.index(item, start);
- 参数:
item 任意的数据
start 下标,可以不传入,默认是0 - 功能:在数组中查找第一次出现item元素下标,从start开始去查找
- 返回值: -1 没有查找到 >=0 查找到的元素的下标
var arr = [10, 20, 30, 40, 50, 20, 30];
var index = arr.indexOf(50, 2);
document.write(index); ------->4
- reduce 归并
- 格式: 数组.reduce(function(prev, next, index, arr)
- 函数参数:
prev 第一次是下标为0的元素;第二次开始是上一次遍历return的值
next 从下标1开始,当前遍历到的元素
arr数组本身 - 功能: 逐步求到数组中所有元素的和
var arr = [10, 20, 30, 40, 50];
var res = arr.reduce(function(prev, next, index, arr){
document.write(prev + ", " + next + "<br/>");
return prev + next;
});
document.write("<br/>" + res);
结果是
- forEach 数组遍历
- 格式: arr.forEach(function(item, index, arr)
- 参数:
item 当前遍历到的元素
index 当前遍历到元素的下标
arr 数组本身
var arr = [10, 20, 30, 40, 50];
arr.forEach(function(item, index, arr){
document.write(item + ", " + index + ", " + arr + "<br/>");
});
//等效代码
var arr = [10, 20, 30, 40, 50];
for(var i = 0; i < arr.length; i++){
document.write(arr[i] + ", " + i + "," + arr + "<br/>");
}
// 数组遍历
for循环
for...in
forEach (ECMA5新增)
- map 映射
- 格式: arr.map(function(item, index, arr)
- 参数:
item 当前遍历到的元素
index 当前遍历到元素的下标
arr 数组本身 - 功能: 遍历要做的事情 映射关系
var arr = [10, 20, 30, 40, 50];
var newArr = arr.map(function(item, index, arr){
return item * 1.3;
});
document.write(newArr + "<br/>");
document.write(arr);
- filter 过滤
- 格式: arr.filter(function(item, index, arr)
- 参数:
item 当前遍历到的元素
index 当前遍历到元素的下标
arr 数组本身 - 功能: 过滤掉指定元素
var arr = [10, 20, 30, 40, 50];
var newArr = arr.filter(function(item, index, arr){
//过滤的条件
return item > 20;
});
document.write(newArr + "<br/>");
document.write(arr);
- some 某些
- 格式: arr.some(function(item, index, arr)
- 参数:
item 当前遍历到的元素
index 当前遍历到元素的下标
arr 数组本身 - 功能: 在数组中查找是否有符合条件的元素,有返回true,没有返回false
- 短路操作:只要找到符合条件的元素,后面的循环就停止了
var arr = [10, 20, 30, 40, 50];
var res = arr.some(function(item, index, arr){
document.write(item + " ");
//过滤的条件
return item > 20;
});
document.write(res + "<br/>");
document.write(arr);
- every 每一个
- 格式: arr.every(function(item, index, arr)
- 参数:
item 当前遍历到的元素
index 当前遍历到元素的下标
arr 数组本身 - 功能: 在数组中查找每一个元素是否有符合条件,符合返回true,不符合返回false
- 短路操作:只要找到不符合条件的元素,后面的循环就停止了
var arr = [10, 20, 30, 40, 50];
var res = arr.every(function(item, index, arr){
document.write(item + " ");
//过滤的条件
return item < 100;
});
document.write(res + "<br/>");
document.write(arr);
题
int lengthOfLongestSubstring(char * s){
if (s[0] == '\0') return 0;
else{
int i, j, k, max = 1, min, flag = 1, mark = 0;
for (i = 0; s[i] != '\0'; i++){
min = 1;
flag = 1;
for (j = i+1; s[j] != '\0'; j++){
for (k = i; k < j; k++)
{
if (s[j] == s[k]){
flag = 0;
break;
}
}
if (flag == 0){
break;
}
else{
min++;
}
}
if (max < min){
max = min;
}
}
return max;
}
}