• 1.js基础语法


    1.Js基础语法
    1.数据类型
    JavaScript不区分整数和浮点数,统一用Number表示
    NaN; // NaN表示Not a Number,当无法计算结果时用NaN表示 Infinity; // Infinity表示无限大,当数值超过了JavaScript的Number所能表示的最大值时,就表示为Infinity
     
    2.比较运算符
    要特别注意相等运算符==。JavaScript在设计时,有两种比较运算符:
    第一种是==比较,它会自动转换数据类型再比较,很多时候,会得到非常诡异的结果;
    第二种是===比较,它不会自动转换数据类型,如果数据类型不一致,返回false,如果一致,再比较。
    由于JavaScript这个设计缺陷,不要使用==比较,始终坚持使用===比较。
    另一个例外是NaN这个特殊的Number与所有其他值都不相等,包括它自己:
    NaN === NaN; // false
    唯一能判断NaN的方法是通过isNaN()函数:
    isNaN(NaN); // true
    最后要注意浮点数的相等比较:
    1 / 3 === (1 - 2 / 3); // false
    这不是JavaScript的设计缺陷。浮点数在运算过程中会产生误差,因为计算机无法精确表示无限循环小数。要比较两个浮点数是否相等,只能计算它们之差的绝对值,看是否小于某个阈值:
    Math.abs(1 / 3 - (1 - 2 / 3)) < 0.0000001; // true
    null和undefined
    null表示一个“空”的值,它和0以及空字符串''不同,0是一个数值,''表示长度为0的字符串,而null表示“空”。
    在其他语言中,也有类似JavaScript的null的表示,例如Java也用null,Swift用nil,Python用None表示。但是,在JavaScript中,还有一个和null类似的undefined,它表示“未定义”。
    JavaScript的设计者希望用null表示一个空的值,而undefined表示值未定义。事实证明,这并没有什么卵用,区分两者的意义不大。大多数情况下,我们都应该用null。undefined仅仅在判断函数参数是否传递的情况下有用。
     
    3.数组
    3.1声明数组:
    数组用[]表示,元素之间用,分隔。
    或者:new Array(1, 2, 3, "hello");
    3.2改变数组长度:
    var arr = [1, 2, 3];
    arr.length;//这时候长度是3
    arr.legth = 7;//这时长度变为7,其中后面4个为未定义的;
    3.3数组的常用方法:
    indexOf();//查找数组中元素的下标
    slice();//用下标值截取数组中的参数返回新数组,不输入参数返回所有
    push();//在Array后添加若干个变量
    pop();//删除数组的最后一个元素
    unshift();//在数组最前面添加元素
    shift();//删除数组最前面的一个元素
    sort()://排序数组
    reverse();//反转数组顺序
    splice(0, 1, "good", "food");//按照下标值增删改元素(只输下标值为删除)
    concat();//合并数组,类似“+”号使用
    join("*");使用指定符号链接数组元素
     
     
    4.对象
    4.1JavaScript的对象是一组由键-值组成的无序集合,例如:
    var person = { name: 'Bob', age: 20, tags: ['js', 'web', 'mobile'], city: 'Beijing', hasCar: true, zipcode: null };
    JavaScript对象的键都是字符串类型,值可以是任意数据类型。上述person对象一共定义了6个键值对,其中每个键又称为对象的属性,例如,person的name属性为'Bob',zipcode属性为null。
    要获取一个对象的属性,我们用对象变量.属性名的方式:
    person.name; // 'Bob' person.zipcode; // null
     
    4.2in操作符
    "name" in person;//判断name是否存在于person中true
    person.hasOwnProperty("name");//判断name属性是否为自身拥有(非继承)true
    5.变量
    js是动态语言,可以兼容多种类型:
    var a = 10.0;
    a = "你好";
     
    6.strict模式(全局变量声明)
    不声明变量类型,则为全局变量,如:
    i = 15;
    在代码的第一行声明"use strict"则进入严格模式,严格模式下禁止不声明变量类型而直接使用;
     
    7.拼接字符串:
    1.一般情况下使用”+“标示即可
    2.字符太多可使用ES6模板字符串方式:
    例子:
    var name = '小明'; var age = 20; var message = `你好, ${name}, 你今年${age}岁了!`; alert(message);
     
    8.字符串的常用方法;
    8.1获取字符串长度:
    var s = 'Hello, world!'; s.length; // 13
    8.2使用数组下标(索引)取值:
    var s = 'Hello, world!'; s[0]; // 'H' s[6]; // ' ' s[7]; // 'w' s[12]; // '!' s[13]; // undefined 超出范围的索引不会报错,但一律返回undefined
    注意:使用字符串索引方式赋值是不允许的;续上:
    s[7] = "q";//内容还是w,不发生变化; 8.3JavaScript为字符串提供了一些常用方法,注意,调用这些方法本身不会改变原有字符串的内容,而是返回一个新字符串:
    toUpperCase
    toUpperCase()把一个字符串全部变为大写:
    var s = 'Hello'; s.toUpperCase(); // 返回'HELLO'
    toLowerCase
    toLowerCase()把一个字符串全部变为小写:
    var s = 'Hello'; var lower = s.toLowerCase(); // 返回'hello'并赋值给变量lower lower; // 'hello'
    indexOf
    indexOf()会搜索指定字符串出现的位置:
    var s = 'hello, world'; s.indexOf('world'); // 返回7 s.indexOf('World'); // 没有找到指定的子串,返回-1
    substring
    substring()返回指定索引区间的子串:
    var s = 'hello, world' s.substring(0, 5); // 从索引0开始到5(不包括5),返回'hello' s.substring(7); // 从索引7开始到结束,返回'world'
     
    9.for...in...遍历数组(类似java增强的for循环)
    var o = { name: 'Jack', age: 20, city: 'Beijing' }; for (var key in o) { alert(key); // 'name', 'age', 'city' }
     
    10.数据结构Map和set(都无法使用下标遍历)
    数据结构set不许重复key
    10.1Map的方法:
    var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);
    m.set("dog",88);//增加元素 m.get('dog'); // 88
     
    10.2Set的方法:
    "use strict"
    var m = new Set([1,2,3]);
    m.add(5);
    m.delete(1);//删除1这个元素
     
    10.3Map和Set的遍历
    使用for...of...遍历
    Set:var m = new Set([1,2,3]);
    for (var k of m) {
    alert(k);
    }
    Map:var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);
    m.set("dog",88);//增加元素 m.get('dog'); // 88
    for (var k of m) {
    alert(k);
    }
    10.4for...in...和for...of...的区别
    var a = ['A', 'B', 'C']; a.name = 'Hello'; for (var x in a) { alert(x); // '0', '1', '2', 'name' }
    var a = ['A', 'B', 'C']; a.name = 'Hello'; for (var x of a) { alert(x); // 'A', 'B', 'C' }
     
     
     
     
  • 相关阅读:
    Linux文件与目录管理(一)
    Linux文件基本属性
    软工实践总结
    微软必应词典的调查与研究
    调研安卓开发环境的发展演变
    软件工程的预定目标
    学习进度第5周
    机械学习----KNN算法
    MyBatis:简介、第一个程序01(纯小白非常实用)
    解决数据库连接时区的问题
  • 原文地址:https://www.cnblogs.com/Nick-Hu/p/8320211.html
Copyright © 2020-2023  润新知