1.堆内存与栈内存
图解1
图解2
重: 简单数据类型存储在栈内存中
复杂数据类型的内容存储在堆内存中,地址存储在栈内存中
2.基本数据类型
①Boolean--布尔类型
注:带引号的是字符串
<script>
// [Boolean-布尔类型]
let flag1 = true;
let flag2 = false;
//True、False、TRUE、FALSE这些写法都是错误的
console.log(flag1);
let flag3 = "true" //带引号的不是布尔类型,是字符串
console.log(flag3);
</script>
②number--数字型
<script>
// [number-数字型]
let age = 111
let date = "222" //字符串
console.log(age);
console.log(date);
console.log(Number.MAX_VALUE); //最大值
console.log(Number.MAX_VALUE*2); //Infinity(无穷大)
var a = 3-"b"
console.log(a); //NaN (Not a Number)NaN也属于数字类型
</script>
③string--字符串型
<script>
// [string-字符串]
let demo1 ="字符串";
let demo2 ='字符串';
let demo3 =`字符串`;
let demo4 ="老师说'今天晚上不上晚自习'"
console.log("111\'222");
</script>
④undefind--未定义型
<script>
// [undefind-未定义型]
// 表示声明的变量还未赋值
let grade;
console.log(grade); //undefind
</script>
⑤null--空型
<script>
// [null-空型]
var a =null;
console.log(a); //null
</script>
3.数据类型检测
①isNaN--检验是否是一个数字
<script>
// isNaN 检验是否是一个非数字
console.log(isNaN(a)); //true
console.log(isNaN(111)); //false
console.log(isNaN("abc")); //true
console.log(isNaN(Infinity)); //false
console.log(isNaN("false")); //true
</script>
②typeof()操作符
当不确定一个值或变量是什么类型的数据时,可以利用typeof操作进行数据类型检测,以字符串形式返回检测结果
布尔类型的true会在运算中转化为数字1
布尔类型的false会在运算中转化为数字0
<script>
//typeof()
console.log(typeof("123")); //string
console.log(typeof(false)); //boolean
console.log(typeof(NaN)); //number
console.log(typeof(Infinity)); //number
console.log(typeof("true")); //string
console.log(typeof(undefined)); //undefined
console.log(typeof(null)); //object
console.log(typeof('aaa'*2)); //number
console.log("aaa"*2); //NaN
console.log(2-"true"); //NaN
console.log(typeof(2-"true")); //Number
//布尔类型的true会在运算中转化为数字1
//布尔类型的false会在运算中转化为数字0
console.log(2-true); //1
console.log(typeof(2-true)); //number
//加号遇上字符串,做拼接使用
console.log(2+"true"); //2ture
console.log(typeof(2+"true")); //string
console.log(2+true); //3
console.log(typeof(2+true)); //number
</script>
4.数据类型的转换
①将数据类型转换为布尔类型
字符串类型和数字类型都会转换为布尔类型的true
空字符串转为布尔类型的false,空格字符串转为true
数字0转为布尔类型的false
<script>
//Boolean()
var a =Boolean("a")
console.log(a); //ture
console.log(Boolean(123)); //true
console.log(Boolean("")); //false
console.log(Boolean(" ")); //true
console.log(Boolean(0)); //false
console.log(Boolean(NaN));//false
console.log(Boolean(undefined)); //false
console.log(Boolean(null)); //false
</script>
②将数据转化为字符串类型
使用String()和toString()进行转换
<script>
let num = 1;
console.log(1); //数字类型的1
let num2 = String(num);
console.log(num2); //字符串类型的1
</script>
③将数据转化为数字型数据
Number()用于将数据转化为数字类型
<script>
//[将数据转化为数字型数据]
console.log(Number(123)); //123
console.log(Number("123")); //123
console.log(Number("")); //0
console.log(Number(" ")); //0
console.log(Number(null)); //0
console.log(Number(undefined)); //NaN
console.log(Number(false)); //0
console.log(Number(true)); //1
console.log(Number("true")); //NaN
console.log(Number("123.1")); //123.1
console.log(Number("123.a")); //NaN
</script>