一个ES6的笔试题目,求大神们帮忙看看~
 function Example(name){
            return this.name = name;
        }

        console.log([0,"0",[],{},null].map(i => typeof new Example(i).name));

我运行结果为:["number", "string", "undefined", "undefined", "object"]
为什么会有undefined的呐?

es6

4个回答

因为空数组中没有值,对象中没有属性和值,故读取数组中或对象中没有的属性值,会返回一个undefined

qq_26725075
丧尸会跳小芭蕾 但是我console.log([0,"0",[1],{},null].map(i => typeof new Example(i).name)); 这样还是一样的结果,那个数组的还是undefined。
接近 3 年之前 回复

数组中只有值,没有属性,他的默认属性是序号012345等等,所以找不到name属性,就会返回一个undefined,而对象中可以自定义属性,已在对象给一个name属性,他就会返回那个name属性

qq_30101879
scottdao 回复丧尸会跳小芭蕾: 跟this指向有关系,把构造函数里的this指向搞懂就好啦
接近 3 年之前 回复
qq_26725075
丧尸会跳小芭蕾 啊哈 我已经知道啦 就不麻烦你啦^_^
接近 3 年之前 回复
qq_26725075
丧尸会跳小芭蕾 不好意思 我现在又有一个新的问题 就是return this.name = name; 为什么[0,"0",null]传入Example函数,明明返回的应该是新生成的对象的name属性,但是为什么会返回一个对象?
接近 3 年之前 回复
qq_26725075
丧尸会跳小芭蕾 哦哦哦,我明白你的意思了 谢谢你啦~
接近 3 年之前 回复

你没有明白我的意思,你在数组中,再加一个空数组,还会是undefined

构造函数理论上应该没有返回值的, 如果你非要写个返回值, 如果返回值是普通类型, 则忽略。 如果是引用类型,则返回该引用类型。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐