Js在内存中分为两种类型:
使用typeof运算符检测变量的类型,可返回:undefined boolean number string
转换:
强制类型转换:创建一个新值,存放由原始值直接转成的值(原值不受影响)
引用类型:
运算符:
- 原始值:存储在Stack中,值直接存储在变量访问的位置,共有:Undefined Null Boolean Number String (5种原始类型)
- 引用值:存储在Heap中,存储在变量处的值是一个指针
使用typeof运算符检测变量的类型,可返回:undefined boolean number string
- object(变量是引用类型或null)
- undefined:变量未被声明过,变量未被赋值,函数无明确返回值(返回的也是undefined)
- null:尚未存在的对象,或函数返回的对象不存在
- Boolean: 0可以转换为false(非0为true)
- Number:直接输入的数字都被看作Number的字面量
- isFinit(Number) 检测某个数字是不是有穷的
- isNaN(String) 检测某个字符串是否可转换为数字
- String:没有固定大小,首字符从0开始
转换:
- 转换为数字: 仅可对String进行转换,parseInt(String) parseFloat(String) 从开头开始,转换能转换的值为相应类型
强制类型转换:创建一个新值,存放由原始值直接转成的值(原值不受影响)
- Boolean(value): 含字符的String,非0数字及对象(只要是object,不论其是否为null):返回true
- Number(value):对值整个进行转换(而不是调用函数那样的按需转换),失败则返回NaN
- String(value):调用其toSring()方法进行转换
引用类型:
- Object类 属性:
- constructor 创建对象的函数的引用
- prototype 对对象原型的引用
- hasOwnProperty("property")判断对象是否有某个特定属性
- isPrototypeOf(object)判断该对象是否为另一对象的原型
- propertyIsEnumerable(property) 判断给定的属性是否可用for..in语句进行枚举
- toString()
- valueOf() 原始值,大多情况下等同于toString()返回的值 以上每种属性和方法都会被其它类覆盖
- String类: 方法:
- charAt(i) 返回对应下标的字符
- charCodeAt(i)返回对应下标字符的字符代码
- concat(" ") 将字符串连接到String对象的原始值上 各方法返回的是String原始值(原始值保持不变)
- indexOf(" ")指定子串在另一个字符串的位置(没找到子串,返回-1)
- lastIndexOf(" ")从字符串尾开始检索
- slice(beginIndex,endIndex)
- subString(beginIndex,endIndex) 从子串中创建字符串
- toUpperCase()/toLocalUpperCase()
- toLowerCase()/toLocalLowerCase()
运算符:
- instanceof 确认对象为某种特定类型 二元运算符 eg:(sValue instanceof String)
- delete:删除对象属性或方法的引用
- void:对任何值都返回undefined
- ==与!= 一个运算符为boolean,将boolean转为数字
- 一个运算符为字符串,另一个为数字,将字符串转为数字
- 一个为对象,另一个为字符串,将调用对象.toString()转换为字符串
- === 只有在无需类型转换运算符就相等时,返回true
- !== 只有在无需类型转换而不相等时,才返回true