![现代JavaScript编程:经典范例与实践技巧](https://wfqqreader-1252317822.image.myqcloud.com/cover/657/26793657/b_26793657.jpg)
2-22 编程练习
练习1:预测下面log语句输出的值。
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P63_67328.jpg?sign=1739636577-0FxGppVKAWMnqvhQCEGUJKlADjbG2NVR-0-cb9c170a8576c1ae9630fc98a3d94497)
解析:将会输出:3 4 25 25。本练习主要考察对JavaScript中值类型和引用类型的理解。值类型数据直接存在变量所在的内存中,在赋值时会直接复制原始值,引用类型变量中存放的是数据所在的地址,赋值时赋的是地址,因此在修改时会影响所有的变量。
练习2:编写一个函数,对传入的参数进行类型检查,如果为undefined或者null,返回布尔值假,否则返回真。
解析:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P63_67329.jpg?sign=1739636577-s2EfjnlKQ5sxBpnWBY1u6Cp9II9WvWss-0-1a1901e8feb9fa942ee6299ed6723b0a)
练习3:分别用八进制和十六进制和科学计数法来表示十进制数99。
解析:
科学计数法:9.9e1。
八进制:0143或0o143。
十六进制:0x63。
练习4:编写函数,实现如下功能。传入两个字符串参数,以换行符将两个字符串进行拼接,之后返回。
解析:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P64_67337.jpg?sign=1739636577-spkTgaNr7EiTP7kXtLyt0NcY4MZmOfoG-0-36d51a4ca3810ee79a2214a932cde421)
练习5:用两种方式创建教师对象,为其添加一个name属性,并用两种方式来进行属性的访问。
解析:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P64_67339.jpg?sign=1739636577-cxWPzEeciDvQvLHWm23ZMudlnMfWtpaX-0-cfbfc59effe36e2c238b7ce139765a2e)
练习6:创建一个函数,其功能是生成1~100间的一个随机数。
解析:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P64_67341.jpg?sign=1739636577-WpOoeqcy2dt93b9tQXJqpaZ9iF8LdfMe-0-3fecc823d2951174cc37c8a54099a9d6)
floor是JavaScript中的一个数学函数,用来进行浮点数的向下取整,random函数用来生成一个0到1之间的随机浮点数。
练习7:思考一下,如何编写一个函数,不使用乘法运算符来实现乘以2的n次方运算。
解析:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P64_67342.jpg?sign=1739636577-oaPnFcNoOG4dcuUrlLne2HiUXehP7nO3-0-d1b340c06002d7a69dbc540eb0b0dbcb)
由于二进制数的运算特点,因此使用左移位运算可以快速实现乘以2的n次方运算。
练习8:编写一个函数,实现如下逻辑。若传入的参数为布尔值,则进行取反后返回;若传入的是字符串值,则在前面拼接“hello, string:”后返回;如果是大于100的数值,就返回100,不大于100的数值则返回1;如果是对象,就返回字符串“Object”;其他情况均返回数值0。
解析:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P65_67344.jpg?sign=1739636577-WeCUOgU7AJtE6lRSwi0eRkpO7hnaat4R-0-9f0857d8b8e90d6b980fb0d0a4f34a97)
练习9:编写函数,使用条件运算符实现如下逻辑。输入的参数能整除3,就返回true,否则返回false。
解析:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P65_67345.jpg?sign=1739636577-KTcLCy4cILMsyfAvXn9bahilDCGmurYp-0-9ec6620c9f4a32d9b705c1a5b9bcee01)
练习10:你能看出下面log语句的输出吗?
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P66_67346.jpg?sign=1739636577-ByRx2f3pyKBWOTMH7Ubzy4toGzlS5pbH-0-35532bb289eda8399349b8f9ddf06766)
解析:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P66_67349.jpg?sign=1739636577-S2Ca2tiSNmPjQVdSc9H78V80ZKLpsMUU-0-f2f81f5a90f8ccdaaca49065c6b38065)
“==”运算符和“===”运算符的最大区别是“==”会进行隐式类型转换。