发表于: 2021-08-29 23:55:50

0 1668



查看深度思考

简述JS中this的指向

JAVASCRIPT中THIS指的是什么?

this是JavaScript语言中定义的众多关键字之一,它的特殊在于它自动定义于每一个函数域内,在函数运行时,this会自动生成一个内部对象,这个对象只能在函数内部使用。同时,随着函数使用场合的不同,this的值会发生变化。但是有一个总的原则,那就是this指的是,调用函数的那个对象。

那什么THIS的指向又是什么呢?

在JavaScript中,this是动态绑定的,它可以是全局对象、当前对象或者任意对象,这完全取决于函数的调用方式。这就导致了this具备了多重含义,可以使得JavaScript更灵活的使用。




var name = '小明';

function look() {     

        var name = '二明';   

        console.log(this.name);    

        console.log(this); 

}; 

look(); //小明



在全局作用域中它的 this 执行当前的全局对象(浏览器端是 Window),所以才会在全局环境下查找'name',然后打印出来

var name = '小明';

var name2 = {     

        name: '二明',     

        age: 20,   

         look: function(){       

        console.log(this.name);         

        console.log(this.age);     

        } 

name2.look();


这里的打印的结果是打印的第一个是二明,第二个是20。因为调用look函数的是name2这个对象,所以this指向的是name2中的name属性的指向只在函数中定义的话是确定不了的,只有当被函数执行的时候才能确定this到底指向谁,也就是谁调用了这个函数。

return的用法是什么?若用在for循环中,还会执行下一次循环吗?


什么是return?

return 语句的作用是从当前函数退出,并从那个函数返回一个值。

clipboard.png

用 return 语句来终止一个函数的执行,并返回 expression 的值。如果 expression 被省略, 或在函数内没有 return 语句被执行,则把值 undefined 赋给调用当前函数的表达式。

二、知识剖析
return作为返回关键字,它有以下两种返回方式。

1、返回函数结果
语法为:return+表达式

clipboard.png

语句结束函数执行,返回调用函数,而且把表达式的值作为函数的结果。

return 表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值, 由return后面的参数指定。return通常是必要的,因为函数调用的时候计算结果通常是通过返回值带出的。

2、返回函数控制
语法为:return;

通常情况下return后面跟有表达式,但是并不是绝对的。此情况就是单纯的将控制权转交给主调函数继续执行。

在大多数情况下,为事件处理函数返回false,可以防止默认的事件行为。 例如,默认情况下点击一个a元素,页面会跳转到该元素href属性指定的页,但我们可以用return flase来阻止它的跳转。

在js中,我们常用return false来阻止提交表单或者继续执行下面的代码。 例如下面的例子:

clipboard.png

即使a函数返回return false 阻止提交了,但是不影响 b()以及 c()函数的执行。在Test()函数里调用a()函数,那么 return false 对于Test()函数来说,只是相当于返回值,而不能阻止Test()函数执行。

三、常见问题
若return用在for循环中,还会执行下一次循环吗?

四、解决方案
代码示例:

clipboard.png

我们可以看到,for循环只返回return所返回的值,并不会执行下一次循环。

五、编码实战
六、扩展思考
除了return之外,还有哪些语句可以跳出循环?

1、break

clipboard.png

上面这个break实例,输出的结果为:12345,当i的值等于5的时候直接通过break跳出了循环,不再继续往下运行。

2、continue

clipboard.png

上面这个continue实例,输出的结果为:1234578910,当i的值等于6的时候直接跳过,继续执行循环。







返回列表 返回列表
评论

    分享到