JavaScript 数据类型与变量提升
2019-12-06 本文已影响0人
仙姑本姑
1.JS 中有哪些数据类型?
JavaScript提供了一种判定给定变量数据类型的手段——typeof操作符,对值或变量使用可以返回它的数据类型。
最新的 ECMAScript 标准定义了 8 种数据类型:其中包括7种原始类型,原始类型的值本身无法改变。
-
Boolean类型
Boolean对象有两个值:true和false.
创建Boolean对象的语法:var boo=new Boolean
-
Null类型
Null类型有一个值:null. -
Undefined类型
Undefined表明变量没有初始化
Undefined有一个值:undefined -
Number类型
JavaScript 中只有一种数字类型:基于 IEEE 754 标准的双精度 64 位二进制格式的值(-(2^53 -1) 到 2^53 -1),当数值类型大于数值类型最大值,会出现Infinity(正无穷)和-infinity(负无穷),当它们与其他数值进行算术运算,整个涮熟表达式会变为:NaN
NaN不会与任何数值相等,可以用isNaN()判断变量是否为NaN. -
BigInt类型
BigInt类型是 JavaScript 中的一个基础的数值类型,可以用任意精度表示整数。使用 BigInt,可以安全地存储和操作大整数,甚至可以超过数字的安全整数限制。BigInt是通过在整数末尾附加 n 或调用构造函数来创建的。
通过使用常量[Number.MAX_SAFE_INTEGER
],可以获得可以用数字递增的最安全的值。
BigInt
不能与数字互换操作。否则,将抛出[TypeError
] ;
可以对BigInt使用运算符+、、-、*和%,就像对数字一样。 -
String类型
JavaScript的字符串类型用于表示文本数据。它是一组16位的无符号整数值的“元素”。在字符串中的每个元素占据了字符串的位置。第一个元素的索引为0,下一个是索引1,依此类推。字符串的长度是它的元素的数量。 -
Symbol类型
符号类型是唯一的并且是不可修改的。
除了以上7种原始类型,还有一种:Object -
Object对象类型
对象其实时一组数据和功能的集合,可以使用new操作符+构造函数名来创建
var obj = new Bojecr()
访问一个对象的属性:
objectName.propertyName
2.JS Object 数据类型和其它原始类型有什么区别?
类型 | 原始类型 | 对象类型 |
---|---|---|
值 | 不可改变 | 可以改变 |
属性和方法 | 不能添加 | 能添加 |
存储值 | 值 | 地址(指针) |
比较 | 值的比较 | 地址的比较 |
3.谈谈你对”变量提升“的理解
编程中,我们习惯将var a = 6;看成是同一个声明,但JavaScript把它看作是两个单独的声明,var=a是变量声明,a=6则是初始化,因此在运行中就产生了执行先后的顺序问题,这样的先后顺序就是所谓的变量提升,且只有声明的变量会被提升,初始化不会。
JavaScript中,函数及变量的声明都将被提升到函数最顶部
var x = 5; // 初始化 x
var y = 7; // 初始化 y
elem = document.getElementById("demo"); // 查找元素
elem.innerHTML = x + " " + y; // 显示 x 和 y
上述实例实际运行顺序为:
var x ;
var y ;
x = 5 ;
y = 7 ;
elem = document.getElementById("demo"); // 查找元素
elem.innerHTML = x + " " + y; // 显示 x 和 y
输出结果为5 7
var x = 5; // 初始化 x
elem = document.getElementById("demo"); // 查找元素
elem.innerHTML = x + " " + y; // 显示 x 和 y
var y = 7; // 初始化 y
此例实际顺序为:
var x ;
var y ;
x = 5;
elem = document.getElementById("demo");
elem.innerHTML = x + " " + y;
y = 7;
输出结果为5 undefined