JavaScript数据类型

JS是一种弱类型或者动态语言。这意味着不用提前声明变量的类型,在程序运行过程中,类型会被自动确定。在代码运行时,变量的数据类型是由 JS 引擎根据=右边变量值的数据类型来判断的,运行完毕之后,变量就确定了数据类型。

一、基本数据类型

基本数据类型说明默认值
Number数字型,包括整型数和浮点型,如100、3.140
String字符串型,例如 '' 张三''   js中字符串都带引号(''  "")'' 或  ''''
Boolean布尔型,例如:true和false ,等价于 1 和 0false
Undefined未定义,js中声明了变量没有给他赋值,结果就为Undefinedundefined
Null let a = null;声明了一个变量 a nullnull
Symbol字符型,ES6新增
  • 查看数据类型(typeof)

    let num=10,str='张三'
    console.log(typeof num);// 值为number
    console.log(typeof str);// 值为string

1.数字型 Number

  • 整数
    let a = 100;
    console.log(a);//  结果为整数100
    
  •  浮点数
    let b = 3.14;
    console.log(b) // 结果为浮点数3.14
  • 最大值/最小值
    console.log(Number.MAX_VALUE)// 最大值
    console.log(Number.MIN_VALUE)// 最小值
  • 无穷大
    /*  无穷可以分为两种,正无穷和负无穷,
        JS 中对应的表示方式为:+Infinity 和 -Infinity。*/
  • 非数 NaN (计算不出结果)
    /**非数不与任何值相等,包括他自己。
       涉及到NaN计算只会得到NaN。
     **/
    let num = 'zhangsan'-10;
    console.log(num) // 结果为NaN

    isNaN()判断是不是数字,是数字返回false,不是数字返回true;

    console.log(isNaN(10))// false
    console.log(isNaN('abc'-10))// true
    console.log(isNaN('10'))// false (存在隐式转换)

2.字符串  String 

  • 转义符
    // 注意引号的嵌套问题,可以使用不同的引号来进行区分
    let str = '它说:"babababa!"';
    
    // \' 单引号
    let str1 = '它说:\'babababa!\'';
    
    // \n 换行符 newline
    let str2 = '红烧肉,\n冒菜';
  • 字符串长度 ( length)
    // 查看字符串长度 length
    let str3 = 'hongshaorou'
    console.log(str3.length);// 结果为11
    

    注意:空格、字符也算一个长度

  • 字符串拼接 (+)

    // 字符串拼接 +  
    let str4 = '999',str5='感冒灵';
    console.log(str4+str5);// 999感冒灵
    console.log('12'+12);// 1212
    console.log('12'+'12');// 1212

    注意:字符串和任意值拼接都会转化成字符串

  • ES6新增的字符串模板(``)

    特点: 1.支持多行文本

let str6 = `0糖
			0卡
			0脂肪`
console.log(str6);// 0糖0卡0脂肪

     2.进行变量解析 (`${变量}`)

// 使用`${}`做字符串拼接,{}里面也可以做运算
let name = 'zhangsan',age = 18;
console.log(`我叫${name},我今年${age+2}岁`);// 

3.布尔型 true和false

let flag1 = true,flag2 = false;
console.log(typeof flag1,typeof flag2);
console.log(flag1+1);// 在加法中,true被当作1
console.log(flag1+1);// 在加法中,false被当作0

会返回 boolean 中 false 的情况 :

  • 空字符串,包含 ''、 ""、字符串模板``
  • 0
  • NaN
  • undefined
  • false
  • null

4.未定义 undefined

let u=undefined;
console.log(u,typeof u);
console.log(u,typeof u);//  数字与undefined相加会得到NaN

返回 undefined 的情况

  • 访问未赋值的变量
  • 任何被设置为 undefined 值的变量
  • 没有定义 return 表达式的函数,隐式返回 undefined
  • return 表达式没有显示的返回任何内容
  • 访问超出数组长度-1的索引号
  • 访问不存在的属性

5.空值 null

undefined表示缺少值;null常常用于释放内存,计算时看作0

let a = null;
console.log(typeof a);// 结果输出为object   这是一个bug 数据类型还是null

let a1 = '10',a2 = 10;
console.log(a1==a2);// true ==只比较两个变量的值
console.log(a1===a2);// false  ===比较两个变量的值和数据类型

console.log(null+'aaa');// nullaaa
console.log(null+1);// 1   null计算看作0

二、数据类型的转换

1、隐式类型转换

隐式转换就是系统内部自动发生的转换,一般发生于不同的数据类型进行运算时

  • 不同数据类型进行比较
  • 不同数据类型进行运算
  • 对非布尔值求布尔值

2、转换成字符串  

变量.toFixed() 把保留几位小数写在括号里;调用这个方法会将结果转换成字符串类型。  

3、转换成数字

4、转换成布尔型

console.log(boolean(0));// false
console.log(boolean('0'));// true

!!两次可以求非布尔值的布尔值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值