JavaScript基基基础 · 第二篇

40 阅读5分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 2 天,点击查看活动详情

上回说到变量,这篇就接着讲数据类型。

1. 数据类型

JavaScript是一种弱类型或者说动态语言。代码运行时,变量的数据类型是根据=右边的变量值的数据类型来判断的。

var age = 10;//这是一个数字型
var areYouOk = '是的';//这是一个字符串型

1.1 数据类型分类

1.1.1 简单数据类型

数字型number

var num = 10;//num 数字型
var PI = 3.14;//PI 数字型
1. 八进制 0-7 数字前面+0 表示八进制
var num1 = 010
console.log(num1)
var num2 = 012
console.log(num2)

num1的值为:8。

num2的值为:10。

2. 十六进制 0-9 a-f 数字前+0x 表示十六进制
var num3 = 0x10
console.log(num3)
var num4 = 0x12
console.log(num4)

num3的值为:16。

num4的值为:18。

数字型范围

数字型的范围在想不起来的时候可以用以下函数查询:

console.log(Number.MAX_VALUE)
console.log(Number.MIN_VALUE)

数字型三个特殊值

数字型中有三个特殊值:

  • infinity:代表无穷大,大于任何数。
  • -infinity:代表无穷小,小于任何数。
  • NaN,not a number,代表一个非数值,表示未定义或不可表示的值。

NaN不能计算,不能比较。

NaN举例:

console.log('ABC'-100)//NaN 非数值,不能减

那如何验证是否是NaN呢?

isNaN() 方法用于判断非数字,并且返回一个值。

  • 如果是数字,返回 false
  • 如果不是数字返回 true
        console.log(isNaN(12))//false
        console.log(isNaN('ABC哈哈'))//true

字符型string

  • 当嵌套时,可以外双内单,或外单内双
        // 外单内双  外双内单
        console.log('我是"pink德华"')
        console.log("我是'pink德华'")
转义符

也可以用转义符

console.log('我是\'pink德华\'')

显示:我是'pink德华'

字符串长度length

字符串是由若干字符组成的,这些字符的数量就是字符串的长度。

通过字符的length属性可以获取整个字符串的长度。

var str = "你好!";
alert(str.length);

显示字符串长度为3

字符串拼接 +
  • 只要有字符串和其他类型相拼接,最终的结果是字符串。
  • 多个字符串之间可以使用+进行拼接。
    • 拼接的方式:字符串 + 任何类型 = 拼接之后得到新字符串
  • 拼接前会把字符串相加的任何类型转换成字符串,再拼接成一个新的字符串。
  1. 字符串相加
alert('hello' + ' ' + 'world');

显示hello world。 2. 数值型字符串相加

alert('100' + '100');

显示100100

  1. 数值字符串 + 数值
alert('11' + 12);

显示1112

口诀:数值相加,字符相连

拼接字符串快捷方法

口诀:引引加加

在需要拼接的地方先用两个'单引号断开字符的连接,再用两个+加号连接起来。

        // 利用 + 做拼接
        console.log('我是' + 'pink老师')

        console.log('我今年年龄是:18岁')

        let age = 20
        console.log('我今年年龄是:' + age + '岁' )

输入年龄案例:

步骤:

  1. 用户输入年龄。
  2. 页面输出 我今年 xx 岁啦,使用“引引加加”。
// 1. 用户输入年龄
// 2. 页面输出 我今年 xx 岁啦
let age = prompt('请输入您的年龄:')
// document.write('我今年' + age + '岁了')
// 引引加加
document.write('我今年' + age + '岁了')

布尔值boolean

  1. 布尔型 true false
        console.log(true)
        console.log(false)

显示:true

显示:false

  1. 只声明不赋值时 undefined
        let age
        console.log(age)

显示:undefined

  1. undefined与字符串拼接时
let str = undefined;
consolr.log(str + 'hello');

显示:undefinedhello

  1. undefined与数值相加时
let str = undefined;
consolr.log(str + 1);

显示:NaN

  1. 赋值null时 null
        let obj = null
        console.log(obj)

显示:null

  1. null与字符串拼接时
let str = null;
consolr.log(str + 'hello');

显示:nullhello

  1. null与数值相加时
let str = null;
consolr.log(str + 1);

显示:1

检测变量数据类型typeof

// 返回的什么类型  string  number Boolean null
        console.log(typeof 123)//number
        console.log(typeof '123')//string
        console.log(typeof true)//boolean
        console.log(typeof undefined)//undefined
        console.log(typeof null)//object
//prompt取过来的值是 字符型的
        var age = prompt('请输入年龄');
        console.log(age);
        console.log(typeof age);

数据类型转换

  1. 转换为字符串
//1.把数字型转换为字符串类型  变量.toString()
        var num = 10;
        var str = num.toString();
				// 括号里面如果是2 转换为 二进制
        console.log(num.toString(2))
        console.log(str);
        console.log(typeof str);
        //2.String(变量)
        console.log(String(num));
        //3.利用 + 拼接字符串的方法实现转换效果
        str = num + ''
        console.log(str);
        console.log(typeof str);
  1. 转换为数字型 重点
// 转换为数字型
        var age = prompt('请输入年龄')
        // 1.parseInt(变量)  可以把字符型的转换为数字型 得到的是整数型
        console.log(parseInt(age))
        console.log(parseInt('3.14')) //3 取整
        console.log(parseInt('3.99')) //3 取整
        console.log(parseInt('120px')) //120 会去掉单位
        console.log(parseInt('rem120px')) //NaN 不是数字开头,不进行运算
        //2.parseFloat(变量) 可以把字符型的转换为数字型 得到的是浮点型
        console.log(parseFloat('3.14'))
        console.log(parseFloat('3.99')) //3 取整
        console.log(parseFloat('120px')) //120 会去掉单位
        console.log(parseFloat('rem120px')) //NaN 不是数字开头,不进行运算
// 3.Number(变量)
        var str = '123'
        console.log(Number(str))
        console.log(Number('12'))
        // 4.利用算术运算 - * / 隐式转换
        console.log('12'-0)//12
        console.log('123'-'12')//111
        console.log('12'*1)//12

例1:输入出生年份计算年龄

var nf = prompt('请输入出生年份')//nf是字符型
    var age = 2022-nf//age是数字型 - 隐式转换
    alert('您的年龄是:' + age)

例2:简单相加

var one = prompt('第一个数')
    var two = prompt('第二个数')
    // var a = Number(one) + Number(two) 
    // 或
    var a = parseFloat(one) + parseFloat(two)
    alert('相加的和为'+a)

转换为布尔值