JavaScript基础知识学习笔记(三)

发布时间:2024年01月06日

一、var,let,const的区别

1.var

可重复声明,有变量提升,没有块级作用域{}

        var a = 10;
        var a = 20;//变量可重名,不报错
        console.log(b);//undefined,有变量提升,不报错
        var b = 20;

        if (true) {
            var c = 'hello';
            console.log(c);//因为var没有块级作用域,所以if外仍可以访问到if内的c的值
        }
        console.log(c);//hello

2.let

不可重复声明,无变量提升,有块级作用域{}

           let a1 = 100;
        // let a1=200; 不可重名 报错

        //    console.log(b1);
        //    let b1=300;  无变量提升,报错
        // if (true) {
        //     let c1 = 'hello';
        //     console.log(c1);
        // }
        // console.log(c1); 报错,因为有块级作用域,所以无法访问到{}内c1的值。

3.const

声明常量,必须有初值,不能重名,没有提升,有块级作用域,可以声明对象、数组、函数。

        const a2 = 800;
        // a2=900;  error 不能重名
        console.log(a2);
        
        const arr = [30, 40, 50];
        // arr=[50,60,70];  error 不能将数组内的数全部修改,只能一个一个修改
        arr[0] = 500;
        console.log(arr);// 0:500  1:40   2:50  length:3

二、类型转换

1.转数字

(1)Number

? ?String? Number? Bollen? Null? Undefined

? ? ? Number(参数)

? ? ? ? ''(空串)?--0 , ?' ?'(空格)--0, ?'123'(数字)---123, ?'123hel'(数字加字母)--NaN, null--0 ?,false--0

       //空字符串和空格
        let str = '';
        str = '   '
        str = Number(str);
        console.log(str, typeof str); //0 number

        //数字
        let str1 = '123';
        str1 = Number(str1);
        console.log(str1, typeof str1); //123 number

        //数字加字符串
        let str2 = '123hre';
        str1 = Number(str2);
        console.log(str1, typeof str1); //NaN number

        //布尔
        let flag = true;
        flag = false;
        flag = Number(flag);
        console.log(flag, typeof flag); //0 number

        //null undefined
        let a = null;
        a = Number(a);
        console.log(a, typeof a); //0,number
        
        //未赋值的变量
        let b;
        console.log(Number(b)); //NaN
(2)parseInt、parseFloat

parseInt(参数) ?整数,parseFloat(参数)? 浮点数(小数),

数字在前可提出来:?'123'? '123LL' --123,其他均为NaN。

        let str3 = '123'
        str3 = '123hel'
        str3 = '123.56H'
        console.log(parseFloat(str3));//123.56
        console.log(parseInt(str3));//123
        console.log(parseFloat(''), parseFloat('  '), parseFloat(true), 
        parseFloat('HELLO123'), parseFloat(undefined) );//NaN,NaN,NaN,NaN,NaN
(3)隐式转换

? ? ? ? 纯数字的字符串前面打上+,或者乘除1,或者取余:+'123' ?'123'*1 '123'/1 ?'123'%1 ?'123'-0

        let num = prompt('请输入一个数字:')
        console.log(num, typeof num);
        num=+num;
        console.log(num,typeof num);
        console.log('123'*1+'123'/1+'123'%1);//246

2.转字符串

?(1)强制转换?

? ?String(参数) ? ---所有都能转 ,参数.toString() ?--null和Undefined不能

        let num=123;
        num=String(num);
        console.log(num,typeof num);// 123 string


        let a=null;
        a=undefined;
        a=true;
        a=String(a);
        console.log(a,typeof a);// true string

        let num1=789;
        num1=true;
        num1=num1.toString();
        console.log(num1,typeof num1);//true string

        // let a1=null;
        // a1=a1.toString();// error null不能进行转换
        // console.log(a1,typeof a1);
? ?(2) 隐式转换 ? ?

? ? 123 + '' ----? '123' ? ?拼接空串自动转换 ?

        let b =123;
        b=b+'';
        console.log(b,typeof b);//123 string
3.转布尔

只有6个是假其他全为真,分别是:'' , null,?undefined ,0,?NaN ,false

真值也有:[],? ?{},? ?'? '? ,"? ?"。

console.log(Boolean(''), Boolean(null), Boolean(undefined), Boolean(0), Boolean(NaN), Boolean(false), );//false false false false false false;
console.log(Boolean([]), Boolean({}), Boolean('  '), Boolean("  "));// true true true true;

三、isNaN

isNaN() 函数用于检查其参数是否是非数字值。如果参数值为 NaN 或字符串、对象、undefined等非数字值则返回 true, 否则返回 false。

    <script>
        console.log(isNaN(NaN)); //true
        console.log(isNaN('')); //0--false
        console.log(isNaN('  ')); //0--false
        console.log(isNaN('123hello')); //123hello--true
        console.log(isNaN('123')); //123--false
        console.log(isNaN(NaN)); //true
        console.log(isNaN({})); //true
        console.log(isNaN(undefined)); //true
    </script>
    <script>
        let num = prompt('请输入一个数字')
        console.log(num);
        /*
        Number()    NaN        '' '  '  null ----0
        parseFloat()    '123'   '123hello'  其他NaN
        
        */
        let a = Number(num) && parseFloat(num);
        console.log(a);
        if (isNaN(NaN)) {
            console.log('不是一个数字');
        } else {
            console.log('是数字')
        }
    </script>

文章来源:https://blog.csdn.net/weixin_52450489/article/details/135416466
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。