一个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的呐?

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

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

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

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