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++先和其他值运算再自身累加 ++先自身累加,再和其他数运算
网友评论