概述
- 运行在浏览器的解释性的语言。
- 在Web世界里,只有JavaScript能跨平台、跨浏览器驱动网页,与用户交互。
- 被认为是玩具语言,不被大众所接受,但是写出高质量的代码很难。
- ECMAScript是一种语言标准,而JavaScript是网景公司对ECMAScript标准的一种实现。
基本数据类型
Number
下面是三种不太常用的数字类型。
1.2345e3; // 科学计数法表示1.2345x1000,等同于1234.5
NaN; // NaN表示Not a Number,当无法计算结果时用NaN表示
Infinity; // Infinity表示无限大,当数值超过了JavaScript的Number所能表示的最大值时,就表示为Infinity
null和undefined
差别不大,前者表示一个空值,后者表示未定义。undefined
仅仅在判断函数参数是否传递的情况下有用。
数组
下面是一种不常用的创建方式。
const a = new Array(1, 2, 3); // [1, 2, 3]
const b = new Array(3); // [empty X 3], 每一个是undefined
请注意,如果通过索引赋值时,索引超过了范围,同样会引起Array大小的变化。
const a = [1, 2, 3];
a[5] = 6;
a // [1, 2, 3, undefined, undefined, 6]
常用方法slice
:相当于字符串的substring,如果不给slice()传递任何参数,它就会从头到尾截取所有元素。利用这一点,我们可以很容易地复制一个Array。
const a = [1, 2, 3]; // [1, 2, 3];
const b = a.slice(); // [1, 2, 3];
a === b // false;
push
:可以向行尾不止添加一个元素。
const a = [1, 2];
a.push(2, 3); // [1, 2, 2, 3]
unshift
:向行首添加元素。
const a = [1, 2];
a.unshift(4, 5); // [4, 5, 1, 2]
shfit
:删除数组的第一个元素,如果为空数组,不会报错,会返回undefined。pop也是同样的道理。
const a = [1];
a.shift(); // 1
a.shift(); //undefined
a // []
splice
:可以从指定的位置添加和删除元素。
const a = [1, 2, 3]
a.splice(1, 0, 3, 4); // [1, 3, 4, 2, 3]
a.splice(1, 1); // [1, 3]
a.splice(1, 1, 3, 4); // [1, 3, 4, 3]
concat
:连接两个数组,或者把元素加入数组。
const a = [1, 2, 3];
const b = ['a', 'b'];
a.concat(b, 'c', 'd'); // [1, 2, 3, 'a', 'b', 'c', 'd']
字符串
转义符号可以转义很多的字符。
'\x41' // 'A'
'\u4e2d\u6587' // '中文'
常用方法substring
对象
- 属性的定义和访问:如果属性有特殊字符,需要用字符串的形式定义,
[]
的形式访问。
const obj = {
'student-type': 'primary'
}
obj['student-type'] // primary
- 可以动态添加和删除属性。
const obj = {};
obj.name = 'jim'; // {name: 'jim'}
delete obj.name // {}
- 可以通过
in
或者hasOwnProperty
来判断是否拥有某个属性,但是前者包含继承的属性。
const obj = {
name: 'jim'
}
'name' in obj // true
'toString' in obj // true
obj.hasOwnProperty('name'); // true
obj.hasOwnProperty('toString') // false
比较运算符
有两点需要注意。
- 始终坚持用
===
, 而不用==
,前者会转换数据类型再比较,可能出现比较诡异的结果。 - NaN和任何其它任何数都不相等,包括它自己。
NaN === NaN // false
isNaN(NaN) // true
控制流
条件判断
没啥需要特别说明的,就是一定要加{}
循环
for...in...
:可以循环出对象的属性,注意这样循环出的数组的属性是字符串而不是数字。
const arr = [1, 2];
for(let props in arr){
console.log(props, typeof props, arr[props]);
}
// 0 string 1
// 1 string 2
来源:https://blog.csdn.net/weixin_38937890/article/details/99815415