下列函数的输出结果是什么?
复制代码
1
2
3
4
5if(function Bar(){}){ console.log("bar"); } console.log(typeof bar);
解析:
- 当if()内的表达式值为真时,才会执行{}内的语句,在js中, 只要不是undefined、null、 0、NaN、""、false.那么无论是任何对象,在条件语句中都为真。所以此时会进入到if语句块,打印出"bar" 。
- 在if()中声明的函数,值是一个表达式,并不会被存储在任何变量上,所以在全局内不会存在变量Bar,所以Bar是一个未定义的变量,那么typeof Bar的值就为undefined了。
- 注意:未声明的变量在typeof不会报错,返回一个"undefined".
拓展题:下面的函数会打印出’打印b’字符串吗?
复制代码
1
2
3
4
5var b = new Boolean(false); if(b){ console.log('打印b'); }
解析:因为包装类生成的是一个对象,不是false,而是Boolean {false}这样的一个对象,所以if()内的语句不是假。
下列表达式会报错的是?
A.1++
B.16… toString(2)
C.NaN.toString();
D. typeof money;
解析:
- 会报错Invalid left -hand side expression in postfix operation。1 ++相当于1=1+ 1,左侧没有意义,++/–仅针对变量可用,操作数不可以为常数。
- 此题若为16. toString()则会报错,为何16… toString()不会报错呢?此种做法是要跟数字区分开,16. toString()会被认为是小数,必然会报错,而16…toString0, 相当于16.0. toString(),此时16.0就已经是小数了,自然不会将其错认为小数了,所以不会报错。注意:想要使用toString方法将数字转换为字符串,一般情
况下不要使用两个点的形式,可以用小括号将要转换的目标括起来,如: (16).toString(). - NaN是一个不是数的数,同样可以调用toString0,不会报错
- 参考第一题,你已经懂了
编造一个构造函数如下
- 编写一个Hero的构造函数。
- 具有health 属性,默认值是50。
- 具有attack() 方法,参数为Hero的实例h,每次h随机减少20 ~ 80的血量(整数)
- 具有injured() 方法,参数为受到的伤害量num, 如果num大于已有血量输出“啊~我死了”, 否则,输出“我还能挺一回合。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21function Hero(){ this.health = 50; this.attack = function(h){ // [0,1) var randomNum =20+ Math.floor(Math.random()*61); h.injured(randomNum); //在这里传参 } this.injured = function (num){ if(num > this.health){ console.log('啊,我死了!') }else{ console.log('我还能秀!') this.health -= num; } } } var luban = new Hero(); var luna = new Hero(); luna.attack(luban); console.log(luban.health);
最后
以上就是真实小蝴蝶最近收集整理的关于js练习题目---关于构造函数的全部内容,更多相关js练习题目---关于构造函数内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复