Map
map属于一种新的数据类型,是一组 键值对 的结构,具有 快速查找 的速度。
创建
1.以嵌套数组的方式为map添加键值对数据。
<script>
var score = new Map([['小花',95],['小明',88],['李狗蛋',99]]);
console.log(score);
</script>
2.先创建map对象,再逐个添加数据。
<script>
var a = new Map();
a.set('name','小芳');
a.set('sex','女');
a.set('age','18');
console.log(a);
</script>
之后的map操作将都以此创建的Map对象举例。
添加
set()
上述创建方法2即为添加例子。
删除
delete()
a.delete('sex');
修改
set()
当对相同的值设置不同的属性时,相当于修改。
a.set('birth',1990);
a.set('birth',2000);
console.log(a);
查找
has()
返回true和false来反应查找结果。
console.log(a.has('age'));
Set
一组key集合。
特点:不存储value且key值不重复。
创建
<script>
// 创建
var a = new Set(); //空set
//特点:重复元素会被自动过滤
var a2 = new Set([1,2,2,3,3,4,4,5,5]);
console.log(a2);
</script>
添加
add()
var a1 = new Set([1,2,3]);
a1.add(4);
删除
delete()
a1.delete(3);
函数
函数的结构
function:指出这是一个函数定义
f:代表函数名称
x:代表传入的参数
{}
代表函数体,可以包含任何语句、任何类型,空语句。
function f(x) {
}
创建函数
1.声明函数:
function f(x) {
}
2.声明对象创建函数:
var sum = function (x) {
};
注意:这里需要在函数后添加 分号。
调用函数
创建函数。
var sum = function (x) {
if (x>0){
return x;
} else {
return -x;
}
};
传入参数调用
console.log(sum(10));
传入多参数
console.log(sum(10,'小明',null,true));
说明多参数不影响调用,只是无意义。
检查参数类型
在调用函数时,为避免参数为undefined。可以对参数进行检查。
function f1(x) {
if (typeof x !== "number"){
throw '输入的类型不属于number';
}else if (x>=0) {
return x;
}else {
return -x;
}
}
传入字符串。
console.log(f1('小明'));
传入正确类型。
console.log(f1(10));
获取所有参数
arguments
概念:一个对应于传递给函数的参数的类数组对象。
注意:
1.不是数组,除了length属性和索引元素之外没有任何Array属性。
2.只在函数内部起作用(永远指向函数内部调用传入的所有参数)。
function a(x) {
console.log('x = '+ x);
for (var i = 0;i<arguments.length;i++){
console.log('arguments'+i+'='+arguments[i]);
}
}
console.log(a(10,20,30,'小花'));
arguments.length来确定传递给函数参数的个数。
rest
使用格式:...rest
注意:它是一个真正的数组。
function sum1(a,b,...rest) {
console.log('a = ' + a);
console.log('b = ' + b);
console.log('rest = '+rest);
}
console.log(sum1(1,2,3,4,5,6,7));
ASI机制
是一种在行末自动添加分号的机制。
以下举return例子:
1.当return和大括号{}在同一行时,代码正常运行。
function s() {
return {
name:'s'
};
}
console.log(s());
2.当在return后回车,另起一行写大括号。
function s() {
return
{
name:'s'
};
}
console.log(s());
此时的代码显示undefined。
在return之后回车,javaScript机制会自动默认添加分号,即:
function s() {
return;
{
name:'s'
};
}
console.log(s());
其他详细请点击链接。
JavaScript ASI 机制详解
变量作用
1.var 变量存在作用域
function sum() {
var x = 1;
x = x + 1;
}
console.log(x = x+2);
函数外使用函数内的变量会报错。
2.同函数内部的同名变量互不影响。
function sum() {
var x = 1;
x = x + 1;
}
function sum1() {
var x = 3;
}
3.js中函数时可以嵌套的,内部函数可以调用外部函数的变量。
function sum2() {
var x = 1;
function s1() {
var y = x + 1;
}
变量提升
提升变量的声明至顶部,不包括值。
function foo() {
var x = 'hello' + y;
console.log(x);
var y = 'baby';
}
foo();
在使用变量之后声明变量,因为变量的提升,所以不会报错。