美文网首页
JS基础知识

JS基础知识

作者: 苏码码 | 来源:发表于2020-02-05 17:42 被阅读0次

    1、JS中常用的数据类型有哪些?
    基本数据类型:number(NaN)、string、null、undefined、boolean
    基本数据类型是直接存储在栈中的,每种类型的数据占据的内存空间的大小是确定的。
    栈是由系统自动分配的,例如,声明在函数中的一个局部变量var a;系统自动在栈中为a开辟空间;只要栈的生育空间大于所申请的空间,系统将为程序提供内存,否则将报异常提示栈溢出

    引用数据类型:object(普通对象{}、数组对象[]、正则对象/^$/、数学函数对象、日期对象等等) function;他们是通过拷贝和new出来的,这样的数据储存于堆中,其实说存储于堆中也不太准确,因为引用类型的数据的地址指针是存储于栈中的,当我们想要访问引用类型的值的时候,需要先从栈中获得对象的地址指针,然后,在通过地址指针找到堆中的所需要的数据

    2、浏览器中常用的内核有哪些?
    webkit: safari、国产浏览器、手机浏览器
    webkit/blink: 谷歌
    gecko: 火狐
    presto: opera
    trident: IE

    3、数据类型之间的区别?
    基本数据类型按值操作(栈内存),引用数据类型操作的是堆内存的空间地址

    4、列举常用的关键字和保留字?
    关键字 var let const function class import export break continue if else for
    instanceof typeof this return switch case do while delete new
    保留字:boolean folat int double long char debugger
    5、JS中创建变量的方式有哪几种?
    var let const function class import

    1.console.log/dir/table等在控制台输出
    console.dir():输出一个对象的详细键值对信息
    console.table():把一个多维JSON数组在控制台按照表格的形式呈现出来
    2.浏览器窗口弹出 alert/confirm/promat

    JS中的加减乘除本应是进行数学运算(如果遇到的值不是数字类型,
    也需要基于Number()方法把其转化成数字,再进行运算)
    但是加法有特殊情况:相加过程中遇到字符串直接变成字符串拼接
    1、var a = 123 + 'abc' + 456 => 'abc123456'

    2、var b = '456' - '123' => 333

    3、var c = 100 + true + 21.2 + null + undefined + "Tencent" + [] +null + 9 + false => 'NaNTencentnull9false'

    4、var str = 'abc123'
    var num = parseInt(str) => alert('number')
    if (num ==NaN) {
    alert(NaN)
    } else if(num == 123){
    alert(123)
    } else if(typeof num == 'number'){
    alert('number')
    } else {
    alert(str)
    }

    5、 var a = 0
    var b = a
    b++
    console.log(a) => 0
    console.log(b) => 1
    var o = {}
    o.a = 0
    var b = o
    b.a = 10
    console.log(o.a) => 10

    6、isNaN(null) => false 按照c++底层机制 首先把null转为数字0 是有效数字 所以结果为false
    isNaN(parseInt(null)) => true parseInt(null) 先把null转成字符串'null',
    'null'中第一位就不是数字,因此结果为NaN 所以结果为true
    Number(null) => 0
    parseFloat(null) => NaN
    Number(undefined) => NaN
    parseInt("") => NaN
    Number("") => 0
    isNaN("") => false 如果不是数字,首先调用Number("")转数字为0
    parseInt(null) => NaN
    Number(null) => 0
    isNaN(null) => false
    parseInt("12px") => 12
    Number("12px") => NaN 只要有非数字,其结果就是NaN
    isNaN("12px") => true

    7、 let a = typeof typeof typeof [12,13]
    console.log(a) => "string"

    let i = '10'
    i = i + 1 => '101'
    i += 1 => '101'
    i++ => 11     i++/(++i)和上面两个运算情况不同,上面两个如果遇到字符串先进行字符串拼接 ,而i++是纯粹的数学运算
    i++和++i的区别是 i++先和其他值运算再自身累加  ++先自身累加,再和其他数运算

    相关文章

      网友评论

          本文标题:JS基础知识

          本文链接:https://www.haomeiwen.com/subject/nunsxhtx.html