JS学习第三天

day03 数据类型和运算符

js的数据类型有6大数据类型
5种基本数据类型
    number  数值类型
  string  字符串类型
  boolean  布尔类型  true和false
  undefined 未定义
  null   空对象
1种特殊数据类型(复杂数据类型 引用数据类型  对象数据类型)
    array    数组   []
    object   对象   {}
    function  函数  funtion(){}

1.number类型

  • number数值类型:整数、小数、负数、16进制、8进制、NaN

<script>
        //number数值类型:整数、小数、负数、16进制、8进制、NaN
        // 1.整数
        var a = 10;
        console.log(typeof (a));//number
        // 2.小数
        var b = 3.1415926;
        console.log(typeof (b));//number
​
        var d = .5;
        console.log(d, typeof (d));//0.5  number
​
        var e = 5.0;
        console.log(e);//5
        // 3.负数
        var c = -10;
        console.log(typeof (c));//number
        // 4.NaN    not a number 不是一个数  当运算没有结果的时候就是NaN
        var x = NaN;
        console.log(typeof (x));//number
​
        var y = 10 / "你好";
        console.log(y);//NaN
        // 注意:任何两个NaN都不相等  == 判断左右两侧是否相等
        console.log(NaN == NaN);//false
​
        //------------------------了解-------------------
        // 浏览器是显示10进制的数据  如果定义的8进制或者16进制  计算机会自动转成10进制
        //5.8进制数:以0开头 范围在0-7之间
        var x1 = 077;
        console.log(x1);//63
        var x2 = 0566;
        console.log(x2);
        // 6.16进制数据:以0x开头 范围在0-9  a-10 b-11 c-12 d-13 e-14 f-15
        var x3 = 0xff;
        console.log(x3);//255
        // 7.精度缺失 0.1+0.2 == 0.3
        // 计算机在运算的时候,会把数转换二进制数据然后再进行计算 计算结果再转成10进制 转换过程中会造成精度缺少
        console.log(0.1 + 0.2 == 0.3);//false  只要不把小数点计算当成判断条件 是不会影响代码执行的
    </script>
  • ==NaN not a number 不是一个数 当运算没有结果的时候就是NaN==

        // 4.NaN    not a number 不是一个数  当运算没有结果的时候就是NaN
        var x = NaN;
        console.log(typeof (x));//number
​
        var y = 10 / "你好";
        console.log(y);//NaN
        // 注意:任何两个NaN都不相等  == 判断左右两侧是否相等
        console.log(NaN == NaN);//false

2.string类型

  • string字符串类型:引号( " " ' ')引起来的都是字符串 所有从页面获取的内容都是字符串数据类型

    • 字符串.length:获取字符串的长度

    • 字符串[下标]:.获取字符串中某个字符

    • 字符串.charAt(下标):获取字符串某个字符

 <script>
        // string类型  引号( " "   ' ')引起来的都是字符串  所有从页面获取的内容都是字符串数据类型
        var str1 = '文字';
        var str2 = "文字1234";
        console.log(typeof str1);//string
        console.log(typeof str2);//string
​
        // 1.获取字符串的长度  字符串.length
        console.log(str1.length);//2
        console.log(str2.length);//6
        // 2.获取字符串中某个字符  字符串[下标] 从左往右开始下标从0开始  取对应下标位置的字符
        console.log(str1[1]);//字
        console.log(str2[4]);//3
        // 3.获取字符串某个字符   字符串.charAt(下标)  获取对应下标位置的字符
        console.log(str1.charAt(0));//文
        console.log(str2.charAt(5));//4
        // 4.字符串遇到+  拼接
        console.log(1 + 1);//2
        console.log("1" + 1);//"11"
        console.log(1 + 2 + "1");//"31"
</script>

3.boolean类型

  • boolean布尔类型 true和false

<script>
        var b1 = true;
        var b2 = false;
        console.log(typeof b1, typeof b2);//boolean boolean
        //作用:用作判断条件
        if (false) {//如果判断条件为true 执行{}中的代码
            console.log("真");
        }
    </script>

4.undefined和null类型

  • undefined 未定义 null 空对象

<script>
        /* 
            undefined
                 未定义  你去快递站拿快递  但快递站没有你的包裹  
            null
                 空对象  你去快递站拿快递  快递员给了一个包裹 但是这个包裹是空的
        */
        var odiv = document.getElementsByTagName("div")[0];
        console.log(odiv);//undefined 
​
        /*
            undefined 和null的区别?
                undefined 未定义  声明变量没有赋值  没有存储空间
                null    空对象   有存储空间
        */
    </script>
  • 面试题 undefined和null的区别

undefined 未定义  声明变量没有赋值  没有存储空间
null    空对象   有存储空间

5.数据类型的转换

  • 将一种数据类型转成另一种数据类型

    • 强制转换(程序员通过某些方法实现转换)

    • 隐式转换(计算机自动转换为其他数据类型)

5.1强制转换成number类型

  • Number() parseInt() parseFloat()

5.1.1Number强制转换

  • Number(要转换的数据):将数据转换为Number类型 如果转换不了则是返回NaN

<script>
        /* 
            Number(要转换的数据):将数据转换为Number类型 如果转换不了则是返回NaN
        */
        var n1 = 10;
        var n2 = false;
        var n3 = "10";
        var x = "10px";
        var y = "";
        var n4 = undefined;
        var n5 = null;
​
        console.log(Number(n1));//10
        console.log(Number(n2));//true-1  false-0
        console.log(Number(n3));//10
        console.log(Number(x));//NaN
        console.log(Number(y));//" "-0  ""-0
​
        console.log(Number(n4));//NaN
        console.log(Number(n5));//0

==总结:Number方法可以转换的:string类型(纯数字、""-0 " "-0)、boolean类型(true-1,false-0)、null(0) 其他都是NaN==

5.1.2parseInt转换

  • parseInt(要转换的数据):将数据转换为number类型,从左往右开始转换,遇到不能转换的或者末尾结束,如果一开始就不能转换则是NaN,结果取整(舍弃小数)

 <script>
        /* 
            parseInt(要转换的数据):针对string类型转换
                将数据转换为number类型,从左往右开始转换,遇到不能转换的或者末尾结束,如果一开始就不能转换则是NaN,结果取整(舍弃小数)
        */
        console.log(parseInt("10"));//10
        console.log(parseInt("10px"));//10
        console.log(parseInt("10.5px"));//10
        console.log(parseInt("10.9px"));//10
        console.log(parseInt("px10.9px"));//NaN
    </script>

5.1.3parseFloat转换

  • parseFloat(要转换的数据):将数据转换为number类型,从左往右开始转换,遇到不能转换的或者末尾结束,如果一开始不能转换则是NaN,结果保留小数

<script>
        /*
            parseFloat(要转换的数据):将数据转换为number类型,从左往右开始转换,遇到不能转换的或者末尾结束,如果一开始不能转换则是NaN,结果保留小数
        */
        console.log(parseFloat("10"));//10
        console.log(parseFloat("10.5px"));//10.5
        console.log(parseFloat("px10.5px"));//NaN
        console.log(parseFloat("10.5"));//10.5
    </script>

5.2强制转换为boolean类型

  • Boolean(要转换的数据):将数据类型强制转换为boolean类型 结果为true或者是false

 <script>
        // number类型:非0即真  NaN也是false
        console.log(Boolean(1));//true
        console.log(Boolean(-10));//true
        console.log(Boolean(3.14));//true
        console.log(Boolean(0x7788));//true
        console.log(Boolean(0));//false
        console.log(Boolean(NaN));//false

        // string类型:有值即为真
        console.log(Boolean("10"));//true
        console.log(Boolean("098766*****"));//true
        console.log(Boolean(" "));//true
        console.log(Boolean(""));//false

        // null undefined
        console.log(Boolean(null));//false
        console.log(Boolean(undefined));//false

        /*
            总结:Boolean结果为false的有:0 NaN null undefined ""
        */
    </script>

==总结:Boolean结果为false的有:0 NaN null undefined ""==

5.3强制转换为string类型

  • String() 要转换的数据.toString()

5.3.1 String强制转换

  • String(要转换的数据):将数据转换string类型,直接是在数据外面加引号

<script>
        console.log(String(1));//"1"
        console.log(String(NaN));//"NaN"
        console.log(String(null));//"null"
        console.log(String(undefined));//"null"
        console.log(String(true));//"true"
</script>

5.3.2 toString强制转换

  • 要转换的数据.toString: 强制转换为string类型

 <script>
        /* 
            1.要转换的数据.toString
                强制转换为string类型
        */
        var n = 1;
        console.log(n, n.toString());//"1"
        var b = true;
        console.log(b.toString());//"true"
        // null和undefined没有toString这个方法的
        var x = undefined;
        console.log(x.toString());//报错
    </script>

5.4其他小方法

  • toFixed(n):保留n位小数

<script>
        // 1.toFixed(n):保留n位小数
        var n = 3.1415926;
        console.log(n.toFixed(4));//3.1416
        var n1 = 0.1 * 0.7;
        console.log(n1, n1.toFixed(2));  
    </script>
  • isNaN:is not a number 是不是 不是一个数字 false是数字 true不是一个数字

       // 2.isNaN   is not a number   是不是  不是一个数字   false是数字  true不是一个数字
        console.log(isNaN(3));//false
        console.log(isNaN("文字"));//true

        // isNaN 判断之前会先调用Number方法进行强制转换 再来进行判断  Number(true)
        console.log(isNaN(true));//false
        console.log(isNaN(""));//false

6.运算符和表达式

  • 运算符:连接一个以上的操作符中间的符号

  • 表达式:由操作数和运算符组成的式子

10 + 20  var a = 10

+运算符   10 20操作数   表达式  10 + 20
  • 运算符的分类

    • 算术运算符 + - * / %(取余 取模) ++ --

    • 赋值运算符 = += -= *= /= %=

    • 逻辑运算符

    • 比较运算符

    • 三目运算符

  • 表达式的分类:算术表达式 赋值表达式 逻辑表达式 比较表达式 三目表达式

6.1算术运算符

  • 算术运算符 + - * / %(取余 取模) ++ --

 <script>
        // 算术运算符  + - *  / %(取余 取模) ++ --
        console.log(10 + 2);//12
        console.log(10 - 2);//8
        console.log(10 * 2);//20
        console.log(10 / 2);//5
        console.log(10 % 2);//0
        console.log(11 % 2);//1
        // 特殊情况
        //1.精度缺少
        console.log(0.1 + 0.2);
        console.log(0.1 * 0.7);
        // 2.隐式转换:在运算过程中 数据自动进行转换
        // 隐式转换的规律 都会转成number类型再进行计算
        console.log(100 * false);//0
        console.log("100" - 10);//90
        console.log(10 + null);// 10
        //字符串拼接+ 会拼接
        console.log("10" + 10); "1010"
    </script>
  • 自增++和自减--

    • 基础用法

    // ++ 自增 自加1   i++  ++i 都是自加1
            // 1.基础用法
            var a = 10;
            a++;//a = a+1
            console.log(a);//11
            ++a;//a = a+1
            console.log(a);//12
    • 参与运算

            // 2.参与运算 
            // ++在前:先自加1,后运算(打印)
            // ++在后 先运算(打印),后自加1
            var n = 10;
            var m = ++n;// m = 11      n = 11
            console.log(m, n);// 11 11
            var x = 10;
            var y = x++;//  y = 10        x = 11
            console.log(x, y);// 11 10
    
    
            //练习1:
            var s = 10;
            var t = 10;
            console.log(s++, ++t);//10   11      s=11  t=11
            console.log(s, t);//11  11
    
            //练习2:
            var a = 10;
            var b = ++a + a++ + a++;// b = 11 + 11 + 12  = 34          a = 13
            var c = a++ + ++b + b++;// c = 13 + 35 + 35  = 83          b = 36  a = 14
            console.log(a, b, c);// 14 36 83
    
            //练习3:
            var x = 10;
            var y = --x + x-- + --x;  //y =9 + 9 + 7 = 25             x = 7
            var z = y-- + --y + x--;  //z = 25+23+7 =55         y = 23  x=6
            console.log(x, y, z); // 6 23 55

6.2赋值运算符

  • 赋值运算符 = += -= *= /= %=

    <script>
        // 赋值运算符 =  +=  -=  *=   /=  %=
        var a = 10;
        a += 2;//a = a+2
        console.log(a);//12
        a -= 10;
        console.log(a);//2
        a *= 100;//a = a*100
        console.log(a);//200
        a /= 2;
        console.log(a);//100
        a %= 3;//a = a%3
        console.log(a);//1
    </script>

7.面试题

null和undefined的区别
Number()的作用?
NaN什么意思?什么时候会出现NaN? 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值