小弟因疫情影响,整天在家苦等Offer
于是心血来潮,将自己之前的考题整理成笔记
上来与大家分享交流
JavaScript太久没複习了,连一些简单的型别宣告作用域等等都没了印象
今天就来谈谈这些基本的执行
(上面答案写错不要理我)
Const compare = function(){
Let num = 123;
Let str = ‘123’;
Console.log(num == str);
Console.log(num === str);
Str = ‘hello’;
Let obj = new String(‘hello’);
Console.log(str == obj);
Console.log(str === obj);
}
Ans: true, false, true, false
两个等于 == →比较value里面的值,像123 = ‘123’
三个等于 === →比较型别, str = ‘hello’; != new String(‘hello’);
像这样↓
Str →物件 “hello”
Obj →建构子 String {“hello”}
这是javascript的弱型别特性,以下网站有详细的javascript弱型别特性
https://medium.com/@yining1204/%E9%97%9C%E6%96%BCjavascript%E7%9A%84%E5%BC%B1%E5%9E%8B%E5%88%A5%E7%89%B9%E6%80%A7-93ffcdcf623e
这一题,主要考上述程式会输出什么数值
首先要先了解let var 跟 var的区别
懒人包:作用域不一样,var的作用域在函数(function)里,let的作用域则是在区块(block)里。
OK,有了此认知后去试想着程式如何执行
Let num = 2;这段宣告仅在function numberGenrator(){}
当呼叫到function addNum(){}时,会将num=5;回传回来,
进而取代了上面的let num = 2; 此时num的值为5。
有关作用域的介绍,可以看下列网站
https://realdennis.medium.com/%E9%96%92%E8%81%8A-var%E8%88%87let%E7%9A%84%E6%87%B6%E4%BA%BA%E5%8C%85-javascript-b5a3f40ee28d
再来釐清一下const 是什么宣告呢?
宣告 const 会对于它的值建立一个唯读的参考。并不是说这个值不可变更,而是这个变数不能再一次指定值。例如,假设常数的内容(值)是个物件,那么此物件的内容(物件的参数)是可以更改的。
所以 const numGen = numberGenerator();
呼叫了上述function
并let x = numGen();
X就为6啦
以上为小弟自己複习一些考古题所做出来的笔记(很菜鞭小力点)
主要是自己透过纪录方式让自己观念更釐清
之后还会陆续Po上自己菜鸟学习笔记
欢迎大家一起讨论教学
下面有两题小弟我还没研究出来,欢迎邦友帮忙指教讨论