Ahead我们根据这些测验答案的统计数据发布了一篇包含最难主题的文章。为了确定这些主题,我们将所有已发布的测验按主题划分,共有15个主题,并计算每个主题的平均百分比。这个实验最有意思的是,除了统计正确答案,我们还调查了Javascript最难的地方,结果大相径庭。在调查中,大多数受访者最难回答的话题是Promises,据统计,Promises仅排在第4位。我们应该在每项任务旁边留下关于正确答案百分比的注释。您不应将此注释视为不变的和100%反映现实。首先,新程序员每天都会回答我们发布的测验和更改统计数据,文章中出现的所有数字都是在文章发布时确定的。其次,有些答案当然是不小心猜到了,或者点错了地方等等。然而,在采访了大量JS开发人员之后,我们可以自信地说这个统计数据清楚地反映了现实。那么,让我们看看TOP-5最难的JS挑战并分析一下,剧透:只有8%的受访者正确解决了TOP-1测验。Top-5,默认函数参数和函数长度属性,18%的人回答正确functionfoo(a,b=10,c){console.log(foo.length);}foo(1,2,3);这里的关键点是函数的length属性应该提供有关函数参数的信息,计算为她的正式定义的参数数量。默认参数特性是在ES2015中引入的。在此之前,所有函数参数都被视为形式参数,函数长度属性用于返回所有函数参数编号。随着默认参数的引入,长度属性的行为发生了变化。由于具有默认值的参数显然是可选的,因此此类参数不计入函数的长度。按照常识,默认值参数之后的所有参数也是可选的。因此,它们也不包含在函数的长度属性中。TOP-4,Object.defineProperty方法及其默认参数,14%的人回答正确我的公司);删除obj.myCompany;console.log(obj.myCompany);大多数受访者对该测验的回答是不确定的。原因:不确定Object.defineProperty()方法是如何工作的。Object.defineProperty()方法定义对象的新属性,或修改对象的现有属性。语法:Object.defineProperty(obj,prop,descriptors)请参见此处:obj—定义或修改属性的对象。prop—要定义或修改的属性的名称。描述符——属性的描述符。有两种类型的描述符:数据描述符(值、可写、可枚举、可配置)和访问描述符(获取和设置)。在此示例的上下文中,我们对数据描述符感兴趣。默认情况下,使用Object.defineProperty()添加的属性不可写、不可枚举和不可配置。可配置属性指定是否可以从对象中删除该属性,以及将来是否可以更改属性描述符。如果为true,则该属性将可用于删除和修改其描述符,如果为false,则无法修改。默认设置为假。因此,测验的正确答案是intspirit,删除此属性的尝试将被忽略。如果你在严格模式下运行代码,你会得到一个错误:TypeError:Cannotdeleteproperty'myCompany'of#