javascript - 객체 메소드를 사용할 때 콘솔 결과에 추가 미확인 항목이 있는 이유는 무엇입니까?
習慣沉默
習慣沉默 2017-05-19 10:32:47
0
7
743

Q1 콘솔 출력이 마지막에 2개로 미확정된 이유는 무엇인가요?

으아악

2분기에는 여기에 미지수가 하나 더 있는 것 같습니다

으아악

보충:
문제 소스:
Ruan Yifeng의 JS 표준에 있는 이 키워드
위 코드는 링크 2에 있습니다. (3) 객체 메서드, 마지막 단락

習慣沉默
習慣沉默

모든 응답(7)
漂亮男人

自动自答,总结前人的帮助:

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的问题了。

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!