加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

7 个常见的 JavaScript 考试及解答

发布时间:2019-11-01 20:59:07 所属栏目:建站 来源:疯狂的技术宅
导读:我信托进修新事物并评估我们所知的对象对本身的前进很是有效,可以停止了我们认为本身的常识过期的环境。在本文中,我将先容一些常见的 JavaScript 常识。请享用! 1.声明 查察以下代码,并答复输出的内容(以及缘故起因)。 //situation1 console.log(person); v

在 JavaScript 中,类是语法糖,在我们的例子中,在原型链上界说了 Student 类中的 sayHello 要领。思量到每次我们建设 Student 类的实例时,城市将 sayHello 属性配置为该实例,使其成为返回字符串 Hello 的 function,因此我们永久不会行使原型链上界说的函数,也就永久不会看到动静 Hello from Student 。

3.工具可变性

思索以下环境中每个部门的输出:

  1. // situation 1 
  2. const user = { 
  3.   name: 'John', 
  4.   surname: 'Doe' 
  5.  
  6. user = { 
  7.   name: 'Mike' 
  8.  
  9. console.log(user); 
  10.  
  11. // situation 2 
  12. const user = { 
  13.   name: 'John', 
  14.   surname: 'Doe' 
  15.  
  16. user.name = 'Mike'; 
  17. console.log(user.name); 
  18.  
  19. // situation 3 
  20. const user = { 
  21.   name: 'John', 
  22.   surname: 'Doe' 
  23.  
  24. const anotherUser = user; 
  25. anotherUser.name = 'Mike'; 
  26. console.log(user.name); 
  27.  
  28. // situation 4 
  29. const user = { 
  30.   name: 'John', 
  31.   surname: 'Doe', 
  32.   address: { 
  33.     street: 'My Street' 
  34.   } 
  35.  
  36. Object.freeze(user); 
  37.  
  38. user.name = 'Mike'; 
  39. user.address.street = 'My Different Street'; 
  40. console.log(user.name); 
  41. console.log(user.address.street); 

声名

Situation 1: 正如我们在上一节中所相识的,我们试图从头分派不应承行使的 const 变量,以是将会获得范例错误。

节制台中的功效将表现以下文本:

  1. Uncaught TypeError: Assignment to constant variable 

Situation 2: 在这种环境下,纵然我们改用要害字 const 声明的变量,也会有差异的举动。差异之处在于我们正在修改工具属性而不是其引用,这在 const 工具变量中是应承的。

节制台中的功效应为单词 Mike。

Situation 3: 通过将 user 分派给 anotherUser 变量,可以在它们之间共享引用或存储位置(假如你乐意)。换句话说,它们两个城市指向内存中的统一个工具,因以是变动一个工具的属性将反应另一个工具的变动。

节制台中的功效应为 Mike。

Situation 4: 在这里,我们行使 Object.freeze 要领来提供先前场景(Situation 3)所缺乏的成果。通过这个要领,我们可以“冻结”工具,从而不应承修改它的属性值。可是有一个题目!它只会举办浅冻结,这意味着它不会掩护深层属性的更新。这就是为什么我们可以或许对 street 属性举办变动,而 name 属性保持稳固的缘故起因。

节制台中的输出依次为 John 和 My Different Street 。

4.箭头函数

运行以下代码段后,将会输出什么以及缘故起因:

  1. const student = { 
  2.   school: 'My School', 
  3.   fullName: 'John Doe', 
  4.   printName: () => { 
  5.     console.log(this.fullName); 
  6.   }, 
  7.   printSchool: function () { 
  8.     console.log(this.school); 
  9.   } 
  10. }; 
  11.  
  12. student.printName(); 
  13. student.printSchool(); 

声名

节制台中的输出将依次为 undefined 和 My School。

你也许会认识以下语法:

  1. var me = this; 
  2. // or 
  3. var self = this; 
  4.  
  5. // ... 
  6. // ... 
  7. // somewhere deep... 
  8. // me.doSomething(); 

你可以把 me 或 self 变量视为父浸染域,该浸染域可用于在个中建设的每个嵌套函数。

当行使箭头函数时,这会自动完成,我们不再必要存储 this 引用来会见代码中更深的处所。箭头函数不绑定本身,而是从父浸染域担任一个箭头函数,这就是为什么在挪用 printName 函数后输出了 undefined 的缘故起因。

5.解构

请查察下面的烧毁信息,并答复将要输出的内容。给定的语法是否应承,不然会激发错误?

  1. const rawUser = { 
  2.    name: 'John', 
  3.    surname: 'Doe', 
  4.    email: 'john@doe.com', 
  5.    displayName: 'SuperCoolJohn', 
  6.    joined: '2016-05-05', 
  7.    image: 'path-to-the-image', 
  8.    followers: 45 
  9.  
  10. let user = {}, userDetails = {}; 
  11. ({ name: user.name, surname: user.surname, ...userDetails } = rawUser); 
  12.  
  13. console.log(user); 
  14. console.log(userDetails);  

声名

尽量有点开箱即用,可是上面的语法是应承的,而且不会激发错误! 很整洁吧?

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读