Q: 下面会输出什么?
console.log(null == undefined)
console.log(null === undefined)
他们两者有什么区别,该如何解释他们两者
console.log(null == undefined)
true
console.log(null === undefined)
false
”==”与”===”一个是判断值是否相等,一个是判断值及类型是否完全相等。
Q: 考虑下面输出
var a = { x: 1}
var b = [1]
typeof a
typeof b
思考,该如何判断变量是object 还是array呢?(在后面的章节会知晓)
思考题:我们如何知道的执行环境是严格模式?(后续章节会知晓)
打卡时间:14:00
数据类型
Undefined类型
如果一个变量未被初始化那么会自动被赋予Undefined值。所以当typeof操作符返回“Undefined”值的时候,我们就知道被检测的变量还没有被声明,而不是尚未初始化。
Null类型
如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为null而不是其他值。这样只要检查null值就可以知道相应的变量是否已经保存了一个对象的引用。
Boolean类型
Boolean类型的自勉之true和false是区分大小写 。也就是说True和False(以及其他的混合大小写形式)都不是Boolean值,只是标识符。
各种数据类型及其对应的转换规则
例子:
var message="hello world";
if(message){
alert("Value is true");
}
括号里面进行隐式转换,将其他类型的值转换成布尔值。
假设一种场景,这个message的值是请求了接口以后才获得的,如果这个message有值,alert出来的值就显示,没有值就不显示
Number类型
NaN(Not a Number) 是个特殊的数值,用于表示一个本来要返回数值的操作数未返回数值的情况。在ECMAScript中,任何数值除以0都会返回NaN。而且NaN与任何值都不相等,包括NaN本身。
针对此特点,ECMAScript定义了isNaN()函数。
isNaN()在接受到一个值之后,会尝试将这个值转换为数值。某些不是数值的值会直接转换为数值,例如字符串“10”或Boolean值。任何不能被转换为数值的值都会导致这个函数返回true。
Boolean值可true可以转换成数值1,所以函数会返回false。
数值转换
三个可以把非数值转换为数值:
Number()
parseInt()
parseFloat()
Number()可以用于任何数据类型,而另外两个函数则专门用于把字符串转换成数值。
parseInt() 函数可解析一个字符串,并返回一个整数。
parseFloat() 函数可解析一个字符串,并返回一个浮点数。
String类型
String类型表示由零或多个16位Unicode字符组成的字符序列,即字符串。可以由双引号(“”)或者单引号(‘’)表示。
String类型包括一些特殊字符,叫“转义序列”。这些字符字面量可以出现在字符串中任意位置,切作为一个字符解析。
转换字符串:toString()方法后面还得了解一下。在第5章。