JS学习快速笔记(一)

159 阅读3分钟

这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战

基本语法

每个语句以;结束,语句块用{...}

最好每个语句或者语句块都加上;{...},因为JavaScript引擎自动加分号在某些情况下会改变程序的语义,导致运行结果与期望不一致。

var x = 1;
if (2 > 1) {
    ...
}

数据类型

  • Number

    JavaScript不区分整数和浮点数,统一用Number表示

  • 字符串

    字符串是以单引号'或双引号"括起来的任意文本

  • 布尔值

    布尔值只有truefalse两种值

  • 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规范引入了新的数据类型MapSet

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笔记,用于快速查找知识点以及总结

文章引用:www.liaoxuefeng.com/wiki/102291…