这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战
基本语法
每个语句以;结束,语句块用{...}
最好每个语句或者语句块都加上
;或{...},因为JavaScript引擎自动加分号在某些情况下会改变程序的语义,导致运行结果与期望不一致。
var x = 1;
if (2 > 1) {
...
}
数据类型
-
Number
JavaScript不区分整数和浮点数,统一用Number表示
-
字符串
字符串是以单引号'或双引号"括起来的任意文本
-
布尔值
布尔值只有
true、false两种值 -
null和undefined
null表示为空,undefined表示为未定义
-
数组
数组用
[]表示,元素之间用,分隔。还可以使用new Array()实现。数组通过索引来访问。[1, 2, 3.14, 'Hello', null, true]; new Array(1, 2, 3); -
对象
JavaScript的对象是一组由键-值组成的无序集合,通过
对象变量.属性名的方式获取对象的属性值。var person = { name: 'JS', age: 18 }; person.name;类似于Java中的Map,只不过key值只能为字符串,但效率是没有Map高的
判断
JavaScript使用if () { ... } else { ... }来进行条件判断
比较运算符有
- 大于
> - 大于等于
>= - 小于
< - 小于等于
<= - 等于
==或者===Tips:==会自动转换数据类型再比较,===它不会自动转换数据类型,如果数据类型不一致,返回false,如果一致,再比较 - 与运算
&& - 或运算
|| - 非运算
!
var age = 20;
if (age >= 18)
alert('adult');
else
alert('teenager');
循环
循环方法有:
-
for 循环
var x = 0; var i; for (i=1; i<=100; i++) { x = x + i; } -
for in循环
for in 循环可以把一个对象的所有属性依次循环出来,也可以获取数组的索引值
-
for of 迭代
后续章节提到
-
迭代器iterable
同上
-
while 循环
判断条件,条件满足就循环
var x = 0; var n = 99; while (n > 0) { x = x + n; n = n - 2; } -
do...while循环
和while循环不同的是在一次循环的结束时再判断,所以do...while循环必定会运行一次循环内代码
var n = 0; do { n = n + 1; } while (n < 100);
Map和Set
ES6规范引入了新的数据类型Map和Set
var m = new Map();
var s = new Set();
和Java中的Map很类似,Map是键值对的结构即k-v对,具有极快的查找速度。
var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);
m.get('Michael'); // 95
// map常用方法
var m = new Map(); // 空Map
m.set('Adam', 67); // 添加新的key-value
m.set('Bob', 59);
m.has('Adam'); // 是否存在key 'Adam': true
m.get('Adam'); // 67
m.delete('Adam'); // 删除key 'Adam'
m.get('Adam'); // undefined
一个key只能对应一个value,多次对一个key放入value,后面的值会把前面的值刷新
object通过属性(也就是名字)来访问对应的成绩,而new Map()构建了一个属于Map类的一个实例对象,这个对象内部有一个map(也就是一系列的键值对),通过对象的get方法访问这个map,从而获取成绩。所以说,两者在实现上完全不同,一个通过属性访问,一个通过方法访问map从而达到目的。另外,map支持不是字符串的key,比如数字这些,而object的key只能是字符串。
Set是对存放的重复的值进行过滤。
var s = new Set([1, 2, 3, 3, '3']);
s; // Set {1, 2, 3, "3"}
// set常用方法
var s = new Set([1, 2, 3]);
s.add(4);
s.delete(3);
迭代器iterable
具备iterable类型的集合可以通过for...of获取值内元素
var a = ['A', 'B', 'C'];
var s = new Set(['A', 'B', 'C']);
var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);
for (var x of a) { // 遍历Array
console.log(x);
}
for (var x of s) { // 遍历Set
console.log(x);
}
for (var x of m) { // 遍历Map
console.log(x[0] + '=' + x[1]);
}
我们还可以通过forEach方法获取,forEach()方法是ES5.1标准引入的,它接收一个函数,每次迭代就自动回调该函数。
var a = ['A', 'B', 'C'];
a.forEach(function (element, index, array) {
// element: 指向当前元素的值
// index: 指向当前索引
// array: 指向Array对象本身
console.log(element + ', index = ' + index);
});
方法的元素可以被忽略,不要求一致
声明
文章为本人学习JS笔记,用于快速查找知识点以及总结