数据类型和类型转换

1.数据类型

1.1 数据类型

JavaScript数据类型整体分为两大类:

基本数据类型:

  • number 数字型

  • string 字符串型

  • boolean 布尔型

  • undefined 未定义型

  • null 空类型

引用数据类型:

  • object 对象

1.1.1 数字型(number)

即我们数学中学习到的数字,可以是整数、小数、正数、负数。

JavaScript中的正数、负数、小数等统一称为数字类型

注意事项:JavaScript是弱数据类型,变量到底属于那种类型,只有赋值之后,我们才能确认。

数字可以有很多操作,比如,乘法*、除法/、加法+、减法-等等,所以经常和算术运算符一起。

数学运算符也叫算术运算发,主要包括加、减、乘、除、取余(求模)。

  • +:求和

  • -:求差

  • *:求积

  • /:求商

  • %:取模(取余数)

    • 开发中经常作为某个数字是否被整除

算术运算符优先级:先乘除取余,后加减,有小括号先算小括号里面的。

案例: 计算圆的面积

需求:对话框中输入圆的半径,算出圆的面积并显示到页面

分析:

面积的数学公式:

转换为JavaScript写法:变量*r*r

let r = +prompt('请输入半径')
        let s = 3.14 * r * r
        document.write(s)
1.1.2 字符串类型(string)

通过单引号('')、双引号("")或反引号(``)包裹的数据都叫字符串,单引号和双引号没有本质上的区别,推荐使用单引号。

let username = '小鸣'
let gender = "男"
let goods = `爱玛`
let tel = '1223444545'
let str = '' // 这种情况叫空字符串

注意事项:

  • 无论单引号或者双引号必须成对使用

  • 单引号/双引号可以互相嵌套,但是不可以自己嵌套自己

  • 必要时可以使用转义符\,输出单引号或双引号。

字符串拼接:

场景:+运算符 可以实现字符串的拼接

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

document.write('我叫'+'小明') // 我叫小明
let username = 'Mary'
let gender = "女"
document.write(username + gender)  // Mary女

模板字符串

使用场景:

拼接字符串和变量

在没有它之前,要拼接变量比较麻烦

document.write('大家好,我叫'+name+',今年'+age+'岁')

语法:

  • 反引号(``)

  • 在英文输入模式下按键盘的tab键上方那个键(1左边那个键)

  • 内容拼接变量时,用${}包住变量

document.write(`大家好,我叫${name},今年${age}岁`)

案例 页面输出用户信息案例

需求:页面弹出对话框,输入名字和年龄,页面显示:大家好,我叫xxx,今年xx岁了

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        let uname = prompt('请输入您的姓名')
        let age = prompt('请输入您的年龄')
        document.write(`大家好,我叫${uname},今年${age}岁了`)
    </script>
</body>
</html>
1.1.3 布尔类型(boolean)

表示肯定或否定时在计算机中对应的是布尔类型数据。

它有两个固定的值true和false,表示肯定的数据用true(真),表示否定的数据用false(假)。

let isCool = true
console.log(isCool)
1.1.4 未定义类型(undefined)

未定义是比较特殊的类型,只有一个值undefined。

什么情况出现未定义类型?

只声明变量,不赋值的情况下,变量的默认值为undefined,一般很少直接为某个变量赋值为undefined。

let age
console.log(age)

工作中的使用场景:

我们开发中经常声明一个变量,等待传送过来的数据。

如果我们不知道这份数据是否传递过来,此时我们可以通过检测这个变量是不是undefined,就判断用户是否有数据传递过来

1.1.5 空类型(null)

JavaScript中的null仅仅是一个代表“无”、“空”或“值未知”的特殊值

let obj = null
console.log(obj) // null

null和undefined区别:

  • undefined表示没有赋值

  • null表示赋值了,但是内容为空

null开发中的使用场景:

官方解释:把null作为尚未创建的对象

将来有个变量里面存放的是一个对象,但是对象还没创建好,可以先给个null

1.2 检测数据类型

1.2.1 控制台输出语句:

控制台语句经常用于测试结果来使用。

可以看出数字型和布尔型颜色为蓝色,字符串和undefined颜色为灰色。

1.2.2 通过typeof关键字检测数据类型

typeof运算符可以返回被检测的数据类型。它支持两种语法形式:

  • 作为运算符:typeof x (常用写法)

  • 函数形式:typeof(x)

换言之,有括号和没括号,得到的结果是一样的,所以我们直接使用运算符的写法

2.类型转换

2.1 为什么要类型转换

JavaScript是弱数据类型:JavaScript也不知变量到底属于那种数据类型,只有赋值了才清楚。

坑:使用表单、prompt获取过来的数据默认是字符串类型,此时就不能直接简单的进行加法运算。

console.log('10000'+'2000')   // 输出结果100002000

此时需要转换变量的数据类型。

通俗来说,就是把一种数据类型的变量转换成我们需要的数据类型。

2.2 隐式转换

某些运算符被执行时,系统内部自动将数据类型进行转换,这种转换称为隐式转换。

规则:

  • +号两边只要有一个是字符串,都会把另外一边转成字符串

  • 除了+以外的算术运算符 比如- * / 等都会把数据转成数据类型

缺点:

  • 转换类型不明确,靠经验才能总结

小技巧:

  • +号作为正号解析可以转换成数字型

  • 任何数据和字符串相加结果都是字符串

2.3 显式转换

编写程序时过度依靠系统内部的隐式转换是不严谨的,因为隐式转换规律并不清晰,大多是靠经验总结的规律。为了避免隐式转换带来的问题,通常根逻辑需要对数据进行显式转换。

概念:自己写代码告诉系统该转成什么类型

转换为数字型:

  • Number(数据)

    • 转换成数字类型

    • 如果字符串内容里面有非数字,转换失败时结果为NaN(Not a Number)即不是一个数字

    • NaN也是number类型的数据,代表非数字

  • parseInt(数据)

    • 只保留整数

  • parseFloat(数据)

    • 可以保留小数

转换为字符型

  • String(数据)

  • 变量.toString()

练习 输入2个数,计算两者的和,打印到页面中

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        let num1 = +prompt('请输入第一个数:')
        let num2 = +prompt('请输入第二个数:')
        let total = num1 + num2
        document.write(`两个数相加的和是${total}`)
    </script>
</body>
</html>

3.实战案例

用户订单信息案例

需求:用户输入商品价格和商品数量,以及收货地址,可以自动打印订单信息

分析:

需要输入3个数据,所以需要3个变量来存储 price num address

需要计算总的价格total

页面打印成表格,里面填充数据即可

记得最好使用模板字符串

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        h2{
            text-align: center;
        }
​
        table{
            /* 合并相邻边框 */
            border-collapse: collapse;
            height: 80px;
            margin: 0 auto;
            text-align: center; 
        }
​
        th{
            padding: 5px 30px;
        }
​
        table,th,td{
            border: 1px solid #000;
        }
    </style>
</head>
<body>
    <h2>确认订单</h2>
    
    <script>
        // 1.用户输入
        let price = +prompt('请输入商品价格:')
        let num = +prompt('请输入商品数量:')
        let address= prompt('请输入收货地址:')
        
        // 2.计算总和
        let total = price * num
​
        // 3.页面打印渲染
        document.write(`
        <table>
            <tr>
                <th>商品名称</th>
                <th>商品价格</th>
                <th>商品数量</th>
                <th>总价</th>
                <th>收货地址</th>
            </tr>
            <tr>
                <td>小米青春版PLUS</td>
                <td>${price}元</td>
                <td>${num}</td>
                <td>${total}元</td>
                <td>${address}</td>
            </tr>
    </table>
        
        `)
    </script>
</body>
</html>

  • 18
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值