JavaScript 快速入门

  1. 数据类型

    • Number:不区分整数与浮点数。
    • 字符串: 以单引号或双引号括起来的任意文本。
    • 布尔值:truefalse
    • 比较运算符:==会自动转换数据类型再比较;===不转换数据类型,如果数据类型不一致,返回false
    • nullundefined: null表示空, undefined表示未定义。
    • 数组:可以包含任意数据类型,new Array(1,2,3)这种创建方法不推荐,可以通过索引访问。
    • 对象:键-值组成的无序集合。键是字符串类型,值可以是任意类型。每个键又称为对象的属性对象变量.属性
    • null、undefined、0、NaN和空字符串''视为false,其他值一概视为true

    变量:可以以$开头。变量本身类型不固定,是动态语言。console.log(x)在控制台打印。不用var声明的变量是全局变量,use strict可以进行检查。

    NaN; //Not a Number
    Infinity; //无限大
    10%3=1;     //对小数也是这样10.5%3=1.5;
    flase==0;//true
    flase===0;//false
    var arr=[1,1.35,'1abc',true];
    var person={name:'Bob'};
    person.name; //'Bob'
  2. 字符串

    • '也是字符时,是""括起来,或者使用转义字符\转义。
    • 多行字符串:反引号 * ... * 。
    • 字符串拼接:"+",或者${name},会自动替换字符串中的变量。

    字符串操作:

    var s="Hello,world!"
    s.length;//13
    s[0]=H;
    //由于字符串不可变,对字符串索引赋值,不会出错,但不改变原内容
    s[0]="X";//"X"
    s[0];//"H"
    s.toUpperCase();  
    s.toLowerCase();
    s.indexOf();//搜索字符串出现位置,没有返回-1
    s.substring();//返回索引区间的子串
  3. 数组
    可以包含任意数据类型,并通过索引来访问每个元素。

    var arr=[1,2,3.14,"hello",true,null];
    arr.length;  //6
    //可以对length重新赋值,将直接导致array大小的变化,若超出则多出的值为undefined,小于则截短
    arr[1]=99;
    arr.indexOf(99);      //指定元素位置
    arr.slice(0,3);   //截取array部分元素,返回新的,即使是完全复制的也不同
    arr.push("a","b");  //末尾添加若干元素
    arr.pop();  //最后一个元素删除掉,空数组返回undefined
    arr.unshift("A","B"); //头部添加元素
    arr.shift(); //删除第一个元素,为空时返回undefined
    arr.sort(); //排序
    arr.reverse(); //反转
    arr.splice(2,3,"Google","Facebook"); //从指定位置开始删除若干元素,然后从该位置添加元素,返回删除的元素
    arr.concat([1,2,3]); //将当前array和另一个array连接起来,并返回一个新的array
    arr.join("-");// 用指定字符串连接每个元素并返回字符串
  4. 对象

    var xiaohong = {
     name: '小红',
     'middle-school': 'No.1 Middle School'
    };
    xiaohong['middle-school']; // 'No.1 Middle School','middle-school'不是一个有效变量
    xiaohong['name']; // '小红'
    xiaohong.name; // '小红'
    //未定义的字段返回undefined
    xiaoming.age = 18; // 新增一个age属性
    delete xiaoming.age; // 删除age属性
    delete xiaoming['name']; // 删除name属性,不存在也不会报错
    //检测属性
    'name' in xiaoming; // true,此属性可能由继承而来
    xiaoming.hasOwnProperty('name'); // true
  5. 循环

    var a = ['A', 'B', 'C'];
    for (var i in a) {
     console.log(i); // '0', '1', '2'   返回String类型
     console.log(a[i]); // 'A', 'B', 'C'
    }
  6. Map和Set

    var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);
    m.get('Michael'); // 95
    m.set('Adam', 67); // 添加新的key-value
    m.has('Adam'); // 是否存在key 'Adam': true
    m.delete('Adam'); // 删除key 'Adam'
    //Set
    var s2 = new Set([1, 2, 3]); // 含1, 2, 3
    s.delete(3);
    s.add(4);
  7. Iterator
    for ... in循环由于历史遗留问题,它遍历的实际上是对象的属性名称。一个Array数组实际上也是一个对象,它的每个元素的索引被视为一个属性。

    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方式:

    var s = new Set(['A', 'B', 'C']);
    s.forEach(function (element, sameElement, set) {
     console.log(element);
    });
    var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);
    m.forEach(function (value, key, map) {
     console.log(value);
    });
    var a = ['A', 'B', 'C'];    //可以只传入element等自己想查看的
    a.forEach(function (element, index, array) {
     // element: 指向当前元素的值
     // index: 指向当前索引
     // array: 指向Array对象本身
     console.log(element + ', index = ' + index);
    });
全部评论

相关推荐

我即大橘:耐泡王
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务