美文网首页
【学习笔记】JavaScript基础 001-020

【学习笔记】JavaScript基础 001-020

作者: 练习时长两年半的写作练习生 | 来源:发表于2023-01-07 22:50 被阅读0次

    001 JS简介

    Javascript:最开始用于处理网页前端验证
    发明于1995年,当时服务器通信很慢,简单的操作没有必要放在服务器验证
    三大公司

    • Netscape Navigator 收费浏览器——live script
    • Sun(Java 公司)——JavaScript
    • Microsoft Internet Explorer 3——JScript
      之后公司共同制定标准——ECMAScript(ES);仅是一个标准(文档),各浏览器的底层实现不尽相同

    现在的 JavaScript

    • ECMAScript
    • DOM 文档对象
    • BOM 浏览器对象

    002 HelloWorld

    Javascript 可以在 html 中执行
    浏览器按 F12 可以进入开发者模式,其中 Elements 可以查看 html 元素,Console 可以快捷执行 Javascript 代码

    <script>
        alert("6");
        document.write("6");
        console.log("6");
    </script>
    

    003 JS编写位置

    1. 写在script标签内
    2. 写在attribute:结构与行为耦合,不方便维护,不推荐使用
    <button onclick="alert('6')">6666666</button>
    <a href="javascript:alert('6');">666666666666666</a>
    
    1. 写在外部文件(最佳方式),可以在不同页面引用,也可以利用浏览器缓存;引用之后不能在script标签内部写代码,写了也不会执行
    <script src=js/script.js></script>
    

    004 JS基本语法

    注释

    /*
     *6666666666666666666666
     *6666666666666666666666
     */
    // 注释也可调试代码
    

    JS 语言的特点

    1. 严格区分大小写
    2. 每一条语句以分号(;)结尾,不写分号会自动添加但消耗资源,还可能解析错误
    3. 忽略多个空格和换行

    005 字面量和变量

    字面量:常量;1, 2, 3, 4, 5;可以直接使用,不过一般不直接使用
    变量:保存字面量,还可任意改变

    // var 声明变量
    var a;
    console.log(a); // undefined
    
    // let 声明变量
    let b;
    console.log(b); // undefined
    
    // 赋值
    a = 123;
    console.log(a); // 123
    

    006 标识符

    所有可以自主命名的都是标识符
    命名规则

    1. 标识符可以有字母,数字,下划线,$
    2. 不能数字开头
    3. 不能是关键字或保留字
    4. JS 的标识符一般采用驼峰命名法

    JS 底层保存标识符是 Unicode,所以理论可以用 UTF-8 来做变量名

    007 字符串 String

    JS 数据类型

    1. String 字符串 let str = "hello"; 如果里面要用双引号,那么外面单引号,或者转义字符
    2. Number 数值
    3. Boolean 布尔值
    4. Null 空值
    5. Undefined 未定义
    6. Object 对象

    前五种是基本数据类型,Object 是引用数据类型

    008 Number

    Number 包括整数和浮点数

    运算符 typeof:检查变量类型;例:typeof 'a' === 'string'

    Number.MAX_VALUE
    Number.MAX_SAFE_INTEGER
    Number.MIN_VALUE         // 无穷小
    

    Infinity:超出范围
    NaN:Not a Number

    • 注意:两个 NaN 不能作等式,即 NaN === NaN 为false

    浮点不精确:0.1 + 0.2 === 0.30000000000000004
    不要用 JS 进行高精度运算

    009 Boolean

    Boolean 即布尔值,只有 true 和 false

    010 Null 和 Undefined

    null:空对象(typeof 返回 object)
    undefined:未定义;声明但未赋值

    011 强制类型转换-String

    将其他类型转换为 String,Number,Boolean

    方式一:调用被转换类型的 toString() 方法;不影响原变量

    • b = a.toString();
    • 注意:null 和 undefined 不能调用方法
      方式二:调用 String() 函数
    • b = String(a);
    • 可以转换 null 和 undefined

    012 强制类型转换-Number

    方式一:Number() 函数

    • 字符串
      • 纯数字:直接转换
      • 非法数字:NaN
      • 空串或仅有空字符的串:0
    • Boolean:true-1, false-0
    • Null:0
    • Undefined:NaN
    • 局限性:不能转例如"123px"的字符串

    方式二:parseInt() 与 parseFloat() 函数

    • 只能取前面有效部分,例:parseInt('123px') === 123parseInt('a123') 的值为 NaN
    • 非 String 会先转成 String 再操作

    013 其他进制的数字

    16进制:0x 开头,如 0xffff
    8进制:0 或 0o 开头,如 0o234567
    2进制:0b 开头;不是所有浏览器支持

    parseInt 可以指定第二个参数表示进制,如parseInt('1234', 10)'1234'作为十进制来转换

    014 转换为 Boolean

    只能用 Boolean() 函数

    • Number:0 是 false,其余是 true
    • String:空串是 false,其余是 true
      • Boolean('false') === true
    • Null:false
    • Undefined:false
    • Object:true

    015 算术运算符

    运算符:typeof
    算术运算符:+-*/%
    +:加法;两个字符串加法是拼接;任何值和字符串加法都先转化成字符串然后拼接

    • 由于 JS 从左到右运算,所以1 + 2 + '3' === 3 + '3' === '33'
    • 除加法外的运算都是转化成数

    -:减法
    *:乘法
    /:除法
    %:取余

    016 一元运算符

    +:正号;不会对数字产生影响
    -:负号
    非 Number 值会先转成 Number;可以用+号将其他类型值转成 Number
    例:1 + +'2' + 3 === 6

    017 自增和自减

    自增:在自身基础上增加1

    let a = 1;
    a++;        // 执行后 a === 2
    

    自增分两种,a++++a

    • 相同点:调用后立即增加 1
    • 不同点:值不同
    let a = 1;
    console.log(a++);  // a++的值为原变量的值,输出1,执行后a值为2
    
    let a = 1;
    console.log(++a);  // ++a的值为新值,输出2,执行后a值为2
    
    let a = 1;
    a = a++; // 这相当于 {b = a++; a = b;} 两句,执行后a值为1
    

    类似地,自减分两种,a----a
    不要在代码中连续使用自增和自减(如类似a++ + ++a + a的表达式),这种东西写在代码中会难以理解

    018 自增练习

    let n1 = 10;
    let n = n1++; // 执行后 n = 10,n1 = 11
    
    n = ++n1; // 执行前 n = 10, n1 = 11
              // 执行后 n = 12, n1 = 12
    
    let n2 = 20;
    n = n2--; // 执行后 n = 20, n2 = 19
    
    n = --n2; // 执行前 n = 20, n2 = 19
              // 执行后 n = 18, n2 = 18
    

    019 逻辑运算符

    布尔值的转换见 014 章
    三种逻辑运算符:!, &&, ||

    !:非;true 转 false,false 转 true;对非布尔值会先转成布尔值再运算
    真值表(以下用 0 和 1 表示 false 和 true)

    a !a
    1 0
    0 1

    任意类型数据做两次非运算可以转成布尔值(即 !!a),相当于 Boolean() 函数

    &&:与;只有两个值都为 true 才返回 true,否则返回 false
    真值表

    a b a && b
    0 0 0
    0 1 0
    1 0 0
    1 1 1

    && 是短路运算,即如果第一个值为 false 就不会检查第二个值
    例:false && alert('1'); 这里第一个值是 false,第二个值的 alert 不会执行

    ||:或;只要两个值有一个 true 就返回 true,两个都为 false 才返回 false
    真值表

    a b a||b
    0 0 0
    0 1 1
    1 0 1
    1 1 1

    || 也是短路运算,即如果第一个值为 true 就不会检查第二个值

    020 非布尔值的与或运算

    非布尔值进行与或运算,会先转换为布尔值,然后再运算,最后返回原值
    与运算:第一个值为 true,返回第二个值;第一个值为 false,返回第一个值

    result = 1 && 2;            // 2
    result = true && NaN;       // NaN
    result = 0 && 2;            // 0
    result = undefined && null; // undefined
    

    或运算:第一个值为 true,返回第一个值;第一个值为 false,返回第二个值

    result = 1 || 2;            // 1
    result = true || NaN;       // true
    result = 0 || 2;            // 2
    result = undefined || null; // null
    

    相关文章

      网友评论

          本文标题:【学习笔记】JavaScript基础 001-020

          本文链接:https://www.haomeiwen.com/subject/cnvycdtx.html