1. JavaScript 中 undefined 和 not defined 的区别
not defined -- 还没声明就使用参数,程序会报错
<script type="text/javascript">
console.log(a)
</script>
运行结果:
报错:Uncaught ReferenceError: a is not defined
undefined -- 声明了但是未初始化便使用,程序不报错还能继续往下走
<script type="text/javascript">
var a;
console.log(a)
</script>
运行结果:
undefined
2. 如何理解 JS 中的this关键字
JS中的this关键字由函数的调用者决定,谁调用就this就指向哪个。如果找不到调用者,this将指向windows对象。
例子1:在一个对象的方法里面使用this进行调用
<script type="text/javascript">
var user = {
name: '小明',
age: 18,
sayHello : function() {
console.log('我的名字是' + this.name)
}
}
user.sayHello()
</script>
运行结果:我的名字是小明
例子2:这边的b方法里面的this指向的是windows对象,因为我们定义了一个b然后赋值的是user里里面的方法,
此时b是挂载在windows下的而不是user下,如果说要显示为小明,那么就要用user.sayHello(),
但是显然我们这边直接调用了b(),调用它的是windows,所以使用的是挂在windows下的name小红
<script type="text/javascript">
var name = '小红'
var user = {
name: '小明',
age: 18,
sayHello : function() {
console.log('我的名字是' + this.name)
}
}
var b = user.sayHello
b()
运行结果:我的名字是小红
</script>
|