JS要点整理-2

161 阅读7分钟

js 定义变量

定义:变量是计算机内存中存储数据的标识符,根据变量名称可以获取到内存中存储的数据。(银行卡)

相当于一个容器,内部可以存储任意类型的数据,使用变量时,用的是内部存储的数据。目的是可以方便的获取或者修改内存中的数据。

定义变量

使用一个 var 的关键字进行定义,后面必须加一个空格,空格后面自定义变量名

变量赋值

初始默认存储的值undefined(未定义)

通过等号 = 赋值,等号右边的值赋值给左边的变量 (等号在 JS 中叫做 赋值号;书写时,等号 = 两侧习惯书写一个空格)

// 变量定义
var a;
// 变量赋值
a = 1;
// 变量定义并赋值
var b = 2;

变量命名规则(必须遵守,不遵守会报错)

  • 由字母、数字、下划线、$符号组成,不能以数字开头
  • 字母区分大小写
  • 不能是关键字和保留字
    • 关键字指的是js中有特殊功能的小词语,比如var、for等
    • 保留字指的是现在没有特殊功能,但是将来新语法中有可能作为关键字使用

变量命名规范(建议遵守的,不遵守不会报错)

  • 变量名必须有意义
  • 遵守驼峰命名法(bigBox/big_box)

js 数据类型

/**
         *  1. 简单数据类型 (基本数据类型)
         *      1.1 数字类型(number):   所有的整数,浮点数和特殊值
         *      
         *      1.2 字符串类型(string): 在 JS 中, 只要是引号包裹的内容, 统称为字符串
         *      
         *      1.3 布尔类型(boolean): 表明 对true/错false(真/假)必须是小写字母
         * 
         *      1.4 undefined类型 (undefined): 表明未定义, 通常我们不会给一个变量赋值为 undefined, 因为 变量定义但不赋值就是一个 undefined
         * 
         *      1.5 null类型(null): 本身就是一个数据,表明为 空对象指针 (空), 一般很少使用,创建的对象准备在将来用于保存对象,最好将该变量初始化为 null
         * 
         *  2. 复杂数据类型 (引用数据类型)  
        */

数据类型检测

在 JS 中, 一个变量内部保存的值 是可以任意更改的,所以在使用的时候为了防止因为数据类型不对, 导致的错误, 所以需要在使用前检测一下数据的类型。 假设要检测的变量名为 box

  1. typeof (box)
  2. typeof box

null 的类型就是 null,但是 typeof 这个方法有一点小问题, 它会将 null 识别为 object 类型

数据类型转换(转数值 / 转字符串 / 转布尔)

转数值

JS 转换的时候 任意类型都能够转换为数字使用, 主要是字符串转数字

  1. 借助一个 转型函数 Number(数据)
  2. parseInt(数据)
  3. parseFloat(数据)
  4. 变量/数据 - 0
 //Number()
     // 1.1 字符串:纯数字字符串转为对应数字,空字符串和空白字符串转为0,非空非纯数字字符串转为NaN
        console.log(Number('10086.11'))
        console.log(Number('10086abc'));
        console.log(Number('!@#%'));
        console.log(Number('你好'));
        console.log(Number('')) //空字符串
        console.log(Number(' ')) //空白字符串
     // 1.2 布尔值:true转为1,false转为0
        console.log(Number(true))
        console.log(Number(false));
     // 1.3 undefined:转为NaN null:转为0
        console.log(Number(undefined))
        console.log(Number(null));

//parseInt  取整
     // 2.1 parseInt 如果传递的是一个数字, 那么会忽略小数点以后的所有内容
        console.log(parseInt(10086.11));
     // 2.2 如果不是数字打头的字符串,会转换为NaN
        console.log(parseInt('ty127887878'));
     //  2.3 字符串中,必须是纯数字字符串或者数字字符开头的字符串,才能转换为正常数字,且只取整数部分
        console.log(parseInt('10067.11dsjkj77')) //只读取前面数据部分且取整
        console.log(parseInt('!!#@!@!'))
        console.log(parseInt('你好'))
        console.log(parseInt(''))
        console.log(parseInt(' ')) 
     //  2.4 其他NaN
        console.log(parseInt(true));
        console.log(parseInt(false));
        console.log(parseInt(undefined));
        console.log(parseInt(null));

        //parseFloat 保留小数点  同上
        console.log(parseFloat(10086.11));
        console.log(parseFloat('ty127887878'));
        console.log(parseFloat('10067.11sjkj77')) //只读取前面数据部分
        console.log(parseFloat('!!#@!@!'))
        console.log(parseFloat('你好'))
        console.log(parseFloat(''))
        console.log(parseFloat(' ')) 
        console.log(parseFloat(true));
        console.log(parseFloat(false));
        console.log(parseFloat(undefined));
        console.log(parseFloat(null));

        //工作中用
        console.log('10067.1' - 0)
        console.log('10067j' - 0)
        console.log(true - 0);
        console.log(false - 0);
        console.log(null - 0);
        console.log('' - 0);
        console.log(' ' - 0);

转字符串

  1. 变量/数据.toString() 问题: undefined 和 null 不能使用
  2. String(变量/数据) 什么类型都能转换为 字符串
  3. 变量/数据 + ''
 //(变量/数据).toString()
      console.log(typeof(1.1),typeof(1.1.toString()));
      console.log(typeof(true),typeof(true.toString()));
      console.log(typeof(false),typeof(false.toString()));
      
      // console.log(typeof(undefined),typeof(undefined.toString())); 
      //undefined不能用.toString()
      // console.log(typeof(null),typeof(null.toString()));              
      //null不能用.toString()
      

      //String(变量/数据)
      console.log(typeof(undefined),typeof(String(undefined)));   
      console.log(typeof(null),typeof(String(null)));       
      
      
      //(变量/数据) + '' 
      console.log(typeof(undefined),typeof(undefined + ''));   
      console.log(typeof(null),typeof(null + ''));      

转布尔

一般开发的时候不会主动的转换布尔类型,一般是隐式转换, 也就是由 JS 帮我们完成了数据的转换, 一般做判断的时候比较常见

  1. 借助一个转型函数 Boolean(变量/数据)
  2. !!变量/数据(一个! 表示得到这个数据取反后的布尔值)
  3. 转为false:NaN、0、“”空字符串、null、undefined
  4. 转为true:非0 非NaN数字、非空字符串
//利用Boolean(变量/数据)
        console.log((Boolean(0)));
        console.log(Boolean(1.1111));
        console.log(Boolean(-1.1111));
        //Number 非零即真
        console.log(Boolean(NaN));  //false

        console.log((Boolean('')));
        console.log((Boolean(' ')));
        console.log((Boolean('ygug')));
        //String 非空字符串为真

        console.log(Boolean(undefined))
        //Undefined 为假

        console.log((Boolean(null)));
          //Null 为假


        // 利用!!(变量、数据)      !为英文叹号,一个叹号表示数据取反后的布尔值
        console.log(!!0);
        console.log(!!-1.1);
        console.log(!!'');
        console.log(!!' ');
        console.log(!!undefined);
        console.log(!!null)

JS 的运算符

也叫 操作符, 是 JS 中 发起一个运算的最简单的方式

算数运算符

运算符本身就是给 数字类型使用的

//如果 符号的任意一边有字符串类型的, 那么不在计算求和, 而是计算一个拼接
               并且拼接后的值是字符串类型的
        console.log(1 + 1)
        console.log(1 + '1')   

        console.log(true + 1);   //2
        console.log(false + 1);  //1
        console.log(true + '1'); //true1
        console.log(false + '1'); //false1


        //两端有字符串,进行隐士转换,变为number类型
        console.log(2 - 1)
        console.log(2 - '1') 

        console.log(true - 1);       //0
        console.log(false - 1);      //-1
        console.log(true - '1');     //0
        console.log(false - '1');    //-1


        console.log(1 * 3)
        console.log(1 * '3')

        console.log(6 / 3)
        console.log(6 / '3')

        console.log(6 % 4)
        console.log(6 % '4')

        console.log(true - 1);
        console.log(false - 1);
        console.log(true - '1');
        console.log(false - '1');
        console.log(typeof(true + '1'));

赋值运算符

//+=
        var a = 100
        a += 50     //a=a+50
        console.log(a)

        //-=
        var a = 100
        a -= 50      //a=a-50
        console.log(a)

        //*=
        var a = 100
        a *= 50      //a=a*50
        console.log(a)

        ///=
        var a = 100
        a /= 50      //a=a/50
        console.log(a)

        //%=
        var a = 100
        a %= 50      //a=a%50
        console.log(a)

比较运算符

  //输出布尔值
        //大于 >
        console.log(100 > 99);
        console.log('100' > 99);

        //小于 <
        console.log(100 < 99);
        console.log('100' < 99);

        //大于等于 >=
        console.log(100 >= 100);
        console.log('100' >= 100);

        //小于等于 >=
        console.log(100 <= 100);
        console.log('100' <= 100);

        //等于 ==(只比较大小)   ===(比较大小和类型)
        console.log(100 == 100);
        console.log(100 == '100');
        console.log(100 === '100');
        
        //不等于 !=(只比较大小)   !==(比较大小和类型)
        console.log(100 != 100);
        console.log(100 != '100');
        console.log(100 !== '100');

自增自减运算符

作用: 将变量自增1或者自减1

语法: 变量++

  如果 符号 在 变量/数据 前, 先运算自增或者自减, 然后参与周围程序运算

++变量

  如果 符号 在 变量/数据 后, 先参与周围程序运算, 然后自增或者自减
// var num = 1
       // ++ 在前, 先运算
       // console.log(++num)  // 2

       // ++ 在后, 后运算
       // console.log(num++)  // 1
       // console.log(num)     // 2

自减运算符

逻辑运算符

&& 逻辑与 逻辑且

逻辑与: 满足条件1 并且 满足条件2

语法: 变量1/数据1 && 变量2/数据2 运行规则: 会判断符号左边的变量的值, 转换为布尔值后

如果符号左边布尔值为 true, 那么运行符号右边的代码或者返回符号右边的代码

如果符号左边布尔值为 false, 那么直接运行符号左边的代码或者返回符号左边的代码

            console.log(1 && 0);
            console.log(0 && 1);
            console.log(true && false)
            true && console.log('你好');
            false && console.log('hello')

|| 逻辑或

逻辑或: 满足条件1 或者 满足条件2

语法: 变量1/数据1 || 变量2/数据2 运行规则: 会判断符号左边的变量的值, 转换为布尔值后

如果符号左边布尔值为 true, 那么运行符号左边的代码或者返回符号左边的代码

如果符号左边布尔值为 false, 那么直接运行符号右边的代码或者返回符号右边的代码

            console.log(1 || 0);
            console.log(0 || 1);
            console.log(true || false)
            console.log(' ' || 0);
            true || console.log('你好');
            false || console.log('hello')

! 逻辑非

得到数据的取反后的布尔值