02、JavaScript-数据类型、运算符

每天一句:每个月要读一本书,离开学校了,你还要经常保持阅读的习惯,大学时候,考前的通宵达旦,说明你具备快速学习的能力,不要让这种能力钝化。


一、标识符&关键字&保留字

  • 标识符,就是变量、函数、属性的名字,或者函数的参数,标示符规则
  a、第一个字符必须是一个字母、下划线(_)或美元符($);
  b、其他字符可以是字母、下划线、美元符或数字;
  c、不能把关键字、保留字、true、false、null作为标识符;
  • 关键字是有特殊含义的,不能用作标示符


    02、JavaScript-数据类型、运算符_第1张图片
    关键字
  • 保留字虽然还没有特定用途,但它们很有可能在将来被用作关键字,所以不能作为标示符


    02、JavaScript-数据类型、运算符_第2张图片
    保留字

二、数据类型

JavaScript是弱类型脚本语言,声明变量时无需指定变量的数据类型,即是变量的数据类型是解释时动态决定的,但JavaScript的值保存在内存中时,也是有数据类型的。

基本数据类型:
  Number数值类型: 包含整数和浮点数;
  Boolean布尔类型: 只有true或false两个值;
  String字符串类型: 字符串变量必须用引号括住(单引号或双引号);
  Undefined类型: 专门用来确定一个已经创建但没有初始值的变量;
  Null类型: 用于表明某个变量的值为空;
【注: 复杂数据类型Object;ECMAScript不支持任何创建自定义类型的机制,所有的值都以上6中数据类型之一】
  • typeof操作符
    typeof操作符是用来检测变量的数据类型,对于值或变量使用typeof会返回字符串
  var num = 10;
  alert( typeof num );  // number
02、JavaScript-数据类型、运算符_第3张图片
检测变量的数据类型
  • Undefined类型

    • Undefined类型只有一个值,即是特殊的undefined,在使用var声明变量,但没有对其初始化时,变量的值就是为undefined,这个值主要的目的是为了比较的
      var a;
      alert(a);  // undefined
    
    • 对于未初始化的变量与根本不存在的变量(未声明的变量是不一样的)
      var num;    
      alert(num);  // undefined
      alert(age); // ReferenceError: age is not defined
    

    注: typeof num和typeof age都返回的是undefined。但在逻辑上,它们的值,一个是undefined,一个是报错;但它们的类型都是undefined,所以定义变量时,尽可能的不要只声明不赋值!

  • Null类型

    • Null类型只有一个值,即特殊值null,它表示变量的值为空或空对象引用,而typeof操作符检测null会返回object
      var box = null;
      alert(typeof box);  // object
    
    • undefined是派生自null的,因此它们的相等性测量返回的是true
      if( null == undefined ) // true
    

注意: undefined与null之间的差别比较微妙,undefined表示没有初始值,而null表示变量有值的,只是其值为null!!

  • Boolean类型
    • Boolean类型只有两个值: true和false,但true不一定等于1,false不一定等于0;另外JS区分大小写的,True和False或其他都不是Boolean类型的值
      var box = true;
      alert(typeof box);  // boolean
    
    • 虽然Boolean类型的字面量只有true和false两种,但所有类型的值都有与这个两个Boolean值等价的值。要将一个值转换为其对应的Boolean值,可以使用转型函数Boolean()
      var hello = 'hello world!';
      // 强制性转换
      var helloB = Boolean(hello);
      alert(helloB);  // true 
    
      // 隐式转换
      if(hello){
        alert('条件为true在这里');  // 执行这条语句
      } else {
        alert('条件为false在这里');
      }
    
02、JavaScript-数据类型、运算符_第4张图片
布尔类型转换
  • Number类型
    Numer类型包括两种数值: 整形和浮点型。

    • 最基本的数值字面量是十进制整数
      var num1 = 100;     // 十进制整数
    
    • 八进制字面量(以8为基数),前导必须是0,八进制序列(0~7)
      var num2 = 070; // 八进制
      var num3 = 079; // 无效八进制,自动解析为79
      var num4 = 08;   // 无效八进制,自动解析为8
    

    【注意: 八进制数并不是所有的浏览器都支持的】

    • 十六进制字面量,前面必须是0x,后面是(09和af)
      var box = 0xA; // 十六进制,10
      var box = 0x1f; // 十六进制,31
    
    • 浮点型,就是该数值中必须包含一个小数点
      var box = 3.8;
      var box = 0.8;
    
    • NaN,即非数值(Not a Number)是一个特殊的值,这个数值用于表示一个本来要返回数值的操作,未返回数值的情况(这就不会导致代码错误而终止程序,因此不会影响程序执行);0除以0,或者以Infinity(正无穷大)执行算术运算都会产生NaN的结果
      var box = 0 / 0;        // NaN
      var box = 12 / 0;     // Infinity
      var box = 12 / 0 * 0;   // NaN
    

    注意: NaN不与任何值相等!!

    • isNaN()函数,用来判断这个值到底是不是NaN【注: 将内容转换为数值】
      alert(isNaN(NaN));  // true
      alert(isNaN(25));   // false, 25是一个数值
      alert(isNaN('25'));  // false,‘25’是一个字符串数值,可以转为数值
      alert(isNaN('Lee')); // true,‘Lee’不能转为数值
      alert(isNaN(true));  // false,true可以转为数值1 
    
    • Number()函数,将非数值转为数值,可以用于任何类型(不能转为数值,即是NaN)
      alert(Number(true));            // 1,Boolean类型true和false分别对应1和0
      alert(Number(25));          // 25,数值类型直接返回
      alert(Number(null));            // 0,空对象返回0
      alert(Number(undefined));   // NaN,undefined返回NaN
    
      // 其实就是将双引号去除,判断是否为数值
      // 字符串1,只包含数值的字符串,会直接转成成十进制数值,如果包含前导0,即自动去掉
      alert(Number('456'));   // 456
      alert(Number('070'));   // 70
      alert(Number('0x1f'));       // 十六进制转为十进制即31
    
      // 字符串2,只包含浮点数值的字符串,会直接转成浮点数值,如果包含前导和后导 0,即自动去掉
      alert(Number('08.90')); //8.9    
    
      // 字符串3,如果字符串是空,那么直接转成0
      alert(Number('')); // 0
    
      // 字符串4,如果不是以上三种字符串类型,则返回NaN
      alert(Number('Lee123')); //NaN
      alert(Number('123aa'));  //NaN
    
    • parseInt()取整函数,对于Number()函数在转换字符串时比较复杂也不够合理,所以更多会使用到parseInt(),从第一位解析到非整数位置
      alert(parseInt('456Lee'));  // 456,会返回整数部分
      alert(parseInt('Lee456Lee'));  // NaN,如果第一个不是数值,就返回 NaN
      alert(parseInt('12Lee56Lee')); // 12,从第一数值开始取,到最后一个连续数值结束
      alert(parseInt('56.12'));    // 56,小数点不是数值,会被去掉
      alert(parseInt(''));           // NaN,空返回 NaN
    
    • parseFloat()函数,用于浮点数值转换的,和parseInt()一样,从第一位解析到非浮点数位置
      alert(parseFloat('123Lee'));    // 123,去掉不是别的部分
      alert(parseFloat('123.4.5'));   // 123.4,只认一个小数点
      alert(parseFloat('0123.400')); // 123.4,去掉前后导
    
  • String类型
    String可以用双引号或单引号表示。

    • toString()函数,可以把值转为字符串
      var box1 = 11;
      alert(typeof box1.toString());  // string
      var box2 = true;
       alert(typeof box2.toString()); // string
    
    • toString()一般是不需要传参,但在数值转为字符串时,可以传递进制参数
      var box = 10;
      alert(box.toString());      // 10,默认十进制输出
      alert(box.toString(2));       // 1010,二进制输出
      alert(box.toString(8));       // 12,八进制输出
      alert(box.toString(10));     // 10,十进制输出
      alert(box.toString(16));      // a,十六进制输出
    
  • Object类型

  var test = null;
  alert( typeof test );

三、运算符

  • 赋值运算符'='
  // 将变量str赋值为HelloWorld
  var str = 'HelloWorld';
  • 一元运算符
    只能操作一个值的运算符即是一元运算符;

    • 递增'++'和递减'- -'
      var box = 100;
      ++box; // 把box累加一个1,相当于 box = box + 1 
      --box; // 把box累减一个1,相当于 box = box - 1 
      box++; // 同上
      box--; // 同上
    
    • 前置和后置的区别
      没有赋值操作,前置和后置是一样的;
      有赋值操作符时,前置运算符会先加加(减减)操作再赋值;后置运算符先赋值再加加(减减)操作;
        var box = 100;
        var age = ++box;         // age值为101,前置即是先执行加加操作,再赋值
        var height = box++;       // height值为100,后置即是先赋值,再执行加加操作
      
        var a = 10;
        var b = a++ + 6;      
        alert(b);         // 16
      
        var e = 10;
        var f = ++e + 6;  
        alert(f);         // 17
      
  • 算术运算符(二元运算符)

    • 加法运算符 '+'
    • 减法运算符 '-'
    • 乘法运算符 '*'
    • 除法运算符 '/'
    • 取余(求模) '%'
  • 关系运算符(二元运算符)
    小于(<)、大于(>)、小于等于(<=)、大于等于(>=)、等于(==)、不等于(!=)、全等(恒等)(===)

    • 等于(==): 如果前后两个变量的值相等,则返回true
        // 判断5是否等于'5'
        alert( 5 == '5' );    // true,JS支持自动类型转换,所以需要时,会将字符串'5'转为数值类型
      
    • 全等(===): 必须前后两个变量的值相等,数据类型也相同,才会返回true
      // 判断5是否全等于'5'
      alert( 5 === '5');  // false,因为两个数据类型不匹配
    
  • 逻辑运算符

    • 逻辑与 &&(并且): 必须所有条件都为true,才返回true,否则返回false
      alert( 5>4 && 10>8 );   // true,条件5>4成立,条件10>8成立,返回true
    
    • 逻辑或 ||(或者): 只要有一个条件为true,就可以返回true,否则返回false
      alert( 5>4 || 10<8 );   // true,条件5>4成立,虽然10<8不成立,但还是返回true
    
    • 逻辑非 !: 只操作一个操作数,如果操作数是true,则返回false;如果操作数是true,则返回false
      alert( !false );    // true
    
  • 三目运算符
    三目运算符其实就是if...else...的简写操作

// 先执行判断操作,如果true执行第二部分代码,false执行第三部分代码
3 > 1 ? alert('3是大于1的') : alert('3是小于1的');  

你可能感兴趣的:(02、JavaScript-数据类型、运算符)