JS的数据类型、运算符和表达式

JS分为原始类型和引用类型

原始类型

  • 原始类型分为数值型、字符串型、布尔型、未定义型(undefined)、null,五种类型。

一、数值型

数值型又分为整数和浮点数

  • 整数型
    • 分为八进制(以0开头->010),十进制,十六进制(以0X开头->0XF)
  • 浮点型
    • 使用小数点记录的数据,还可以使用指数记录的数据
    • 例如:1.2 3.4 1.888e3

二、字符串型

  • 常用于表示一些文本字符数据,例如:姓名、邮箱、电话、家庭住址

  • 特点:使用引号(单引号或双引号)把数据包含起来

  • 查看汉字的Unicode编码

    '一'.charCodeAt(); //19968
    
  • 查看汉字的Unicode编码十六进制形式

    '一'.charCodeAt().toString(16); // 4e00
    
  • 查看16进制Unicode编码对应汉字,检验汉字范围 4e00 ~ 9fa5

    console.log('\u4e00');
    

布尔型

  • 在程序中表示真或者假的结果
  • 取值 true/false
  • 常用语表示是否的结果
  • 例如:是否登录,是否注册,是否是会员...

未定义型

  • 只有一个值 undefined
  • 当声明一个变量,未赋值,此时变量的值为undefined

null

  • 在js中,null表示空,常用于释放一个对象。

检测数据类型

  • typeof( 参数 ) 参数表示要检测的数据
  • 结果有number(数值型),string(字符串型),boolean(布尔型),undefined(未定义型)

数据类型转换

隐式转换

  1. 数字 + 字符串:数字会被转成字符串
10 + 'kb'  //'10kb'
  1. 数字 + 布尔值:布尔值会被转换数字 true->1/false->0
1 + true  //2
  1. 布尔值 + 布尔值:布尔值会被转成数字 true->1/false->0
true + false //1
  1. 布尔值 + 字符串:布尔值会被转成字符串
true + 'abc'  //'trueabc'
// 根据上述内容总结以下内容:
var num1=3, num2='st', num3 = true;
console.log(num1+num2+num3);  //'3sttrue'
console.log(num2+num3+num1);  //'sttrue3' 
console.log(num3+num2+num1);  //'truest3'
console.log(num1+num3+num2);  //'4st' 

强制转换

  1. 强制转换成整型
// 从第一位开始找数字,遇到非数字或者小数点,结束,如果第一位是非数字,返回 NaN 
// NaN  -->  Not  a  Number 不是一个数字
parseInt();
parseInt('23.55t');   // 23
  1. 强制转换成浮点型
// 从第一位开始找数字,遇到数字继续往后找,遇到小数点继续往后找,知道遇到非数字就会终止。
// 如果第一位是非数字返回 NaN
parseFloat();
parseFloat('23.55t');  //23.55
  1. 转换成数值型
// 如果被转换的值中有非数字,则结果为NaN
Number();
Number('23.55t');  //NaN
Number('23.55');   //23.55
  1. 转换成字符串型
// toString可以将数值型和布尔型的值转换为字符串类型。
toString()
20.toString()  // '20'

运算符和表达式

  • 由运算符连接的操作的数据,这种形式就成为表达式。
  1. 算术运算符
+  -  *  /   %  ++  --
%   取余
++  自增,在原来的基础之上加1
--   自减,在原来的基础之上减1
console.log(num++); // 先打印num的值,然后再执行加1
console.log(++num); // 先执行加1,然后再打印num的值
// 练习:以下程序的结果是?
  var a = 1;
  console.log(a++  +  ++a); //a=3
  console.log(a++  +  ++a  +  a++)
  1. 比较(关系)运算符
>  >=  <  <=  ==  !=  ===(全等于)  !==(不全等于)
产生的结果是一个布尔型的值(true / false)
等于(==):比较值是否相同
全等于(===):比较值和类型是否相同,两个都满足结果是true
// 比较运算符的两端,只有有一个是数值型,另外一个隐式转换为数值型
'3' > 10  //false
//  比较运算符的两端,如果都是字符串,比较的是Unicode码值
  '3' > '10' //true
// 练习:比较两个中文的大小
// 如果第一个字符相同,则继续比较第二个字符。
'张三丰' > '张无忌' // 三 -> 19977  无 -> 26080

// 字符串 3m 会隐式转换为数值型,使用的是 Number,结果 NaN;
// NaN和任何的值比较,结果都是 false,即使和自身比较也是 false。
'3m' > 10
  1. 逻辑运算符
  • && 并且 | | 或者 ! 非
  • && 两个条件都满足结果是true
  • || 两个条件至少满足其一结果是true
  • ! 反向,逆向;非真为假,非假为真
  • 逻辑中断(短路逻辑)
    • && 如果第一个条件为false,整个的结果就是false,第二个条件也没有继续执行的必要了
    • || 如果第一个条件为true,整个的结果就是true,第二个条件也没有继续执行的必要了
var a = 1,b = 2;
a>3  &&  (a=5);
b<5  ||    (b=4);
//a结果是1   b结果是2
  1. 位运算符(了解)

1 10 11 100 101 110 111 1000 1001 1010 1011
1100 1101

  • 在执行位运算的时候,十进制的值会转成二进制。
    • 按位与(&) 上下两位都是1,结果才是1,否则是0
    • 按位或( | ) 上下两位只要有一个1,结果就是1,否则是0
    • 按位异或(^) 上下两位相同是0,不同是1
    • 按位右移(>>) 删除最后的几位, 例如 3>>1 结果1,数字变小
    • 按位左移(<<) 在末尾添加0,例如3<<1 结果6,数字变大
  1. 赋值运算符

= +=(在原来基础之上加) -= *= /= %=

  1. 三目(条件)运算符
  • 一目运算符就是只有一个操作数或者表达式
a++  a--  !false
  • 二目运算符就是含有两个操作数或者表达式
+  -  *  /  >  >=  <  <=  == !=  ===  !==  &&  ||  
&  |  ^  >>  <<   =  +=  -=  *=  /=  %=
  • 三目运算符是含有三个操作数或者表达式
条件表达式 ? 表达式1 : 表达式2
如果条件表达式结果是true,执行表达式1,否则执行表达式2

你可能感兴趣的:(JS的数据类型、运算符和表达式)