JS之this与语句分号问题v(**V**)v
Posted junxiaobai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS之this与语句分号问题v(**V**)v相关的知识,希望对你有一定的参考价值。
1 <script > 2 //this知识 3 //*Q:什么是this? 4 //*A:所有函数内部都有一个this,任何函数本质上都是通过某个对象来调用的,如果没有直接指定就是window 5 //* 它的值是调用函数的当前对象 6 //*Q:如何确定this的值 7 //*A:test:window 8 // p.test():test 9 // new test():新创建的对象 10 // p.call(obj):obj 11 12 function Person(color) { 13 console.log(this) 14 this.color = color; 15 this.getColor = function () { 16 console.log(this) 17 return this.color; 18 }; 19 this.setColor = function (color) { 20 console.log(this) 21 this.color = color; 22 }; 23 } 24 25 Person("red"); //this是谁? window 26 27 var p = new Person("yello"); //this是谁? p 28 29 p.getColor(); //this是谁? p 30 31 var obj = {}; 32 p.setColor.call(obj, "black"); //this是谁? obj 33 34 var test = p.setColor; 35 test(); //this是谁? window 36 37 function fun1() { 38 function fun2() { 39 console.log(this); 40 } 41 42 fun2(); //this是谁? window 43 } 44 fun1(); 45 46 //JS关于加分号问题‘ 47 //js一条语句后面可以不加分号 48 //是否加分号是编码风格问题,没有应该或不应该,只有你喜不喜欢 49 //但在以下情况下不加分号会出现问题,要求需要在前面加一个分号 50 //小括号开头的前一条语句 51 //中括号开头的前一条语句 52 var a=3 53 ;(function () {//匿名函数自调用前面如果不加分号会出现错误,所以需要在前面加上一个括号 54 55 })() 56 57 var b=4 58 ;[1,2].forEach(function () {//这里在IDE上不会显示红线,但在运行中会出现编译错误,所以这里也要加一个分号,最好是加在一条语句的前面 59 60 }) 61 /* 62 编译器的错误理解:var b=4[1,2].forEach(function () {//就会报undefined 63 }) 64 */ 65 </script>
以上是关于JS之this与语句分号问题v(**V**)v的主要内容,如果未能解决你的问题,请参考以下文章