84669인 학습
152542인 학습
20005인 학습
5487인 학습
7821인 학습
359900인 학습
3350인 학습
180660인 학습
48569인 학습
18603인 학습
40936인 학습
1549인 학습
1183인 학습
32909인 학습
Q1 콘솔 출력이 마지막에 2개로 미확정된 이유는 무엇인가요?
2분기에는 여기에 미지수가 하나 더 있는 것 같습니다
보충: 문제 소스: Ruan Yifeng의 JS 표준에 있는 이 키워드위 코드는 링크 2에 있습니다. (3) 객체 메서드, 마지막 단락
自动自答,总结前人的帮助:
Q1第一个undefined,因为hello指向了一个方法,可以看做functionName,所以this就是windowthis.p; //window.p//首先声明一个window.p,未赋值,值是undifined
this.p; //window.p
关键是多了一个undifined!第二个undefined,前面有个箭头,在 m 函数里加一个 return 'test',//"test"所以,这个箭头可以看做return后面的值,这里m函数没有return,没有返回值就是undifined总结:前面这个箭头,是控制台独有的,命令行调试时没有控制台先是执行函数,然后是,输出函数的执行结果(比如再用来 给别的赋值)
//"test"
Q2第一个undefined,因为hello指向了一个对象,可以看做b,所以this.p; //b.p
this.p; //b.p
是最后一条语句的返回值啦,你在 m 函数里加一个 return “test” 试试?
个人觉得 第一个undefined是因为函数没有返回值,第二个undefined有可能是用浏览器调试的原因,你试试用命令行调试会不会出现第二个undefined。
你用的是Chrome浏览器的控制台吗?第二个undefined是本来就有的,和你的代码无关。
输入var a = 1;
按回车也有一个undefined。
我觉得吧是你吧这个方法的this指针改变了 你吧a对象里的方法定义到了window下面一个变量里 这时候this指向了window 而window下并没有p的定义 你可以在var hello之前声明一个var P就明白了
1.hello()没有返回值 2.console.log()这个函数没有返回值
多出来的undefined是js语句本身的值,剩下的就是this的问题了。
undefined
this
自动自答,总结前人的帮助:
Q1
第一个undefined,因为hello指向了一个方法,可以看做functionName,所以this就是window
this.p; //window.p
//首先声明一个window.p,未赋值,值是undifined关键是多了一个undifined!
第二个undefined,前面有个箭头,
在 m 函数里加一个 return 'test',
//"test"
所以,这个箭头可以看做return后面的值,这里m函数没有return,没有返回值就是undifined
总结:前面这个箭头,是控制台独有的,命令行调试时没有
控制台先是执行函数,然后是,输出函数的执行结果(比如再用来 给别的赋值)
Q2
第一个undefined,因为hello指向了一个对象,可以看做b,所以
this.p; //b.p
是最后一条语句的返回值啦,你在 m 函数里加一个 return “test” 试试?
个人觉得 第一个undefined是因为函数没有返回值,第二个undefined有可能是用浏览器调试的原因,你试试用命令行调试会不会出现第二个undefined。
你用的是Chrome浏览器的控制台吗?第二个undefined是本来就有的,和你的代码无关。
输入var a = 1;
按回车也有一个undefined。
我觉得吧是你吧这个方法的this指针改变了 你吧a对象里的方法定义到了window下面一个变量里 这时候this指向了window 而window下并没有p的定义 你可以在var hello之前声明一个var P就明白了
1.hello()没有返回值
2.console.log()这个函数没有返回值
多出来的
undefined
是js语句本身的值,剩下的就是this
的问题了。