js数据类型和变量

87 阅读2分钟

六种基本数据类型

undefined(未定义)、null(空)、Boolean(布尔)、String(字符串)、Number(数字)、SymbolBigInt(大整数)

变量

变量声明(有var 有变量名字,没有值) 变量初始化(有var 有变量名,有值)

为什么要使用变量?--操作数据

varletconst
变量提升××
全局变量××
重复声明××
重新赋值×
暂时死区×
块作用域×
只声明不初始化×

变量交换

//第一种
var a = 1,b=10
var temp = a
a = b
b = temp

//第二种
var a=1,b=20;
a=a+b;
b=a-b;
a=a-b;

//第三种
var a=1,b=10;
function fun(){
  [a,b] = [b,a]
  console.log('a:'+a);
  console.log('b:'+b);
}
fun()

数据类型

类型判断

toString.call()

#判断所有类型
toString.call() 

用法: 
	Object.prototype.toString.call(123) === "[object Number]"  //true
	toString.call("")==="[object String]"  //true

typeof

#判断基本数据类型
typeof
    
用法: 
typeof

instanceof

//判断引用类型
//用于判断某个变量是否是某个对象的实例,返回值为true或false
instanceof
    
arr instanceof Array

prototypeObj.isPrototypeOf(object) //用于测试一个对象是否存在于另一个对象的原型链上
Person.isPrototypeOf(person)//返回true || false

Object.getPrototypeOf(object) //返回指定对象的原型(内部[[Prototype]]属性的值)
Object.getPrototypeOf(person1) === Person.prototype //返回true || false

undefined

未定义,变量声明了没有赋值,函数没有明确返回值

null

空类型,一个对象指向为空,此时可以赋值为null

BigInt

ES2020 引入了一种新的数据类型 BigInt(大整数),来解决这个问题,这是 ECMAScript 的第八种数据类型。BigInt 只用来表示整数,没有位数的限制,任何位数的整数都可以精确表示。 为了与 Number 类型区别,BigInt 类型的数据必须添加后缀n

1234 // 普通整数
1234n // BigInt

// BigInt 的运算
1n + 2n // 3n

BigInt 可以使用负号(-),但是不能使用正号(+),因为会与 asm.js 冲突。

-42n // 正确
+42n // 报错

BigInt对象

可以用作构造函数生成 BigInt 类型的数值。转换规则基本与Number()一致,将其他类型的值转为 BigInt。

BigInt(123) // 123n
BigInt('123') // 123n
BigInt(false) // 0n
BigInt(true) // 1n

BigInt()构造函数必须有参数,而且参数必须可以正常转为数值,下面的用法都会报错。

new BigInt() // TypeError
BigInt(undefined) //TypeError
BigInt(null) // TypeError
BigInt('123n') // SyntaxError
BigInt('abc') // SyntaxError

数值运算

let max = Number.MAX_SAFE_INTEGER
console.log(max);    //9007199254740991
console.log(max+1); //9007199254740992
console.log(max+2); //9007199254740992

console.log(BigInt(max));           //9007199254740991n
console.log(BigInt(max)+BigInt(1)); //9007199254740992n
console.log(BigInt(max)+BigInt(2)); //9007199254740993n