这是我参与11月更文挑战的第29天,活动详情查看:2021最后一次更文挑战
-
typeof操作符,instanceof操作符
JS中值的类型分为原始值类型和对象类型。
原始值类型包括 number, string, boolean, null 和 undefined; 对象类型即 object。
首先原始值类型它就不是对象。 另外,要注意 'hello' 和 new String('hello') 的区别,前者是字符串字面值,属于原始类型,而后者是对象。用 typeof 运算符返回的值也是完全不一样的:
typeof 'hello'; // 'string'
typeof new String('hello'); // 'object'
之所以很多人分不清字符串字面值和 String 对象,归根结底就是 JS 的语法对你们太过纵容了。
当执行 'hello'.length 时,发现可以意料之中的返回 5,你们就觉得 'hello' 就是 String 对象,不然它怎么会有 String 对象的属性。其实,这是由于 JS 在执行到这条语句的时候,内部将 'hello' 包装成了一个 String 对象,执行完后,再把这个对象丢弃了,这种语法叫做 “装箱”,不要认为 JS 帮你装箱了,你就可以在写代码的时候不分箱里箱外了!
1.操作符
(1)typeof操作符
格式:resul t= typeof variable
返回值:
undefined 值未定义
boolean 布尔值
string 字符串
number 数值
object 对象、null
function 函数
(2)instanceof操作符
格式:result = variable instanceof constructor
返回值:
true
false
-
标准盒子模型和IE盒子模型
W3Cschool对盒子模型的图解
js里面没有函数重载的概念,在其他语言中(如java)中,可以存在同名函数,
只要传入的参数数量或者类型不同即可。
在js中,定义了两个同名函数后, 后面的函数会覆盖前面定义的函数。
结合这道题来说,由于函数声明提升, 所以函数声明会提前,由于存在同名函数,后面的add函数将覆盖第一个add函数, 所以两次调用add()返回的值是相同的。也就是y,z都为4.