JavaScript笔记

1.数组
1.直接创建,缺点是不能批量创建(如长度100)

    a = [1,2,3]
    console.log(a)		//[ 1, 2, 3 ]

2.用new方法创建
只用一个参数,则该参数表示数组长度,数组元素为null

   a = new Array(1)
   console.log(a)		//[ <1 empty item> ]

若要批量创建,用fill方法:

a = new Array(10).fill(2)
console.log(a)		//[ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 ]

用超过一个参数,则参数为所有数组元素

a = new Array(1,2)
console.log(a)		//[ 1, 2 ]

3.数组可以看做特殊的键值对,键为下标,值为对应元素

arr = [1, 2, 3.14, 'Hello', true, null, undefined];
    for (var i in arr) {
        console.log(i, arr[i]);
    }

输出:
0 1
1 2
2 3.14
3 Hello
4 true
5 null
6 undefined

    arr = [1, 2, 3.14, 'Hello', true, null, undefined];
    console.log(3.14 in arr);	//false,值不在arr的键集合中
    console.log(3 in arr);		//true,下标3存在
    console.log(7 in arr)	//false,下标7越界

2.Map
https://www.liaoxuefeng.com/wiki/1022910821149312/1023024181109440
创建:

var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);

查值:

m.get('Michael'); // 95

注意不能用m['Michael']的形式查值

添加:

var m = new Map(); // 空Map
m.set('Adam', 67); // 添加新的key-value

判断是否存在:

m.has('Adam'); // 是否存在key 'Adam': true

注意不能用in操作符判断是否存在键

删除:

m.delete('Adam'); // 删除key 'Adam'
m.get('Adam'); // undefined

3.箭头函数:注意=号与>号之间不能有空格

x => x * x

相当于

function (x) {
    return x * x;
}

多个参数:

 (x,y) => x*10+y

相当于

 function(x, y) {
 	return x*10 + y;
 }

进阶:写一个函数,用map和reduce函数,将字符串s='13579’转为数字,不能直接用parseInt:

function string2int(s) {
	return s.split('').map(s=>+s).reduce((x,y)=>x*10+y);
}

参考 https://www.liaoxuefeng.com/wiki/1022910821149312/1031549578462080

4.+'号运算符作为一元运算符
此时Expression将进行ToNumber()操作。
如:

var b = '1'		//字符1
console.log(typeof b)	//string
console.log(typeof +b)		//number

参考 https://www.cnblogs.com/polk6/p/js-adv-addopr.html

5.!运算符
作用是取非,但对于不同的数据类型有不同的计算结果,但类型都是布尔值
1)数值:

var x = 0;
console.log(!x);		//true
x = -0.00;
console.log(!x);		//true
x = -1.5;
console.log(!x);		//false

可知只有数值0(包括整数0,小数0以及负0)的真值为false,因此取反为true。
其余数值真值均为true。

2)字符串

var x = '';
console.log(!x);		//true
x = '125haha蛤蛤';
console.log(!x);		//false

可知只有空字符串真值为false。

3)布尔值

var x = false;
console.log(!x);		//true

布尔值只有两种,false取反为true

4)对象

var x = {
    name: 'Bob',
    age: 20,
    tags: ['js', 'web', 'mobile'],
    city: 'Beijing',
    hasCar: true,
    zipcode: null
};
console.log(!x);		//false
x = {};
console.log(!x);		//false
console.log(Object.keys(x).length === 0)		//true

可知无论是空对象还是空对象,布尔值均为true,因此判断是否为空只能看key个数是否为0

5)null和undefined

var x = null;
console.log(!x);		//true
x = undefined;
console.log(!x);		//true

nullundefined真值均为false

6.null和undefined的类型

var x = null;
console.log(typeof x);		//object
x = undefined;
console.log(typeof x);		//undefined

注意null类型是object

7.对象的属性名一般要求必须是一个有效的变量名。如果属性名包含特殊字符,就必须用''括起来:

var xiaohong = {
    name: '小红',
    'middle-school': 'No.1 Middle School'
    '哈哈': true
};

xiaohong的属性名middle-school不是一个有效的变量,就需要用''括起来。访问这个属性也无法使用.操作符,必须用['xxx']来访问:

xiaohong['name'];   // '小红'
xiaohong.name;   // '小红'
xiaoming['哈哈'];  //‘哈哈’
xiaoming.哈哈;  //‘哈哈’
xiaohong['middle-school']; // 'No.1 Middle School'
xiaoming.middle-school;  //报错

https://www.liaoxuefeng.com/wiki/1022910821149312/1023020997017056

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值