动态型别
// JS属于 动态型别// 执行阶段才会赋予确立型别// typeof 检视型别var name = '皮杰先生'console.log(name); // 型别 stringconsole.log('皮杰先生'); // 型别 string// 会发现 值的本身就具备型别 // 而我们是把值赋予到变数上// 变数的型别式来自于值的
型别转换
分为 显性转换 (Explicit conversion) 与 隐性转换 (Implicit conversion)
// 显性转换// 一个变数的值 直接被赋予另一个型别的值var a = 1;console.log(typeof a); // numbera = '1'console.log(typeof a); // string
//隐性转换var a = 1;console.log(a , typeof a); // 1 numbera = a + '';console.log(a , typeof a); // 1 string (number 转 string)a = a * 5;console.log(a , typeof a); // 5 number (string 转 number)
原始型别及物件型别
原始型别列表
Boolean 布林Null 空值Undefined 未定义Number 数值String 字串BigInt(new) 整数数值(new)Symbol(new) Symbol(new)上述这些原始型别都有各自的方法(ex:字串英文字转大写)
那为什么他们有各自的方法呢???
因为他们有额外的包裹物件
(Null , Undefined 没有包裹物件 )
这里来看 null 与 not defined 的型别
var d = null;console.log(typeof d); // object// JS长久以来的错误 但无法修正 因有的网站透过此错误来完成网站应用console.log(name);// name is not definedconsole.log(typeof name);// undefined// 是 typeof 针对 not defined的保护措施
刚刚我们有稍微提到包裹物件
这边先举个例子
var a = 'Jay ';console.log(a.length); // 4console.log(a.toUpperCase()); // JAYconsole.log(a.trim()); // 去头尾空白
那 a 究竟还有那些方法??
这时我们就可以利用包裹物件来查询
// 建构式宣告字串var a = 'Jay';var e = new String(a);console.log(e); //请看下图console.log(typeof e); // object
这里的 proto 就是包裹物件的原型(方法皆在这)
但要注意
当我们宣告原始型别,要避免用建构式宣告
因为型别会是物件(object)
那今天的介绍就到这里
若有任何问题 或 内容有误
请跟我说唷