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

7 个常见的 JavaScript 考试及解答

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

我信托进修新事物并评估我们所知的对象对本身的前进很是有效,可以停止了我们认为本身的常识过期的环境。在本文中,我将先容一些常见的 JavaScript 常识。请享用!

7 个常见的 JavaScript 考试及解答

1.声明

查察以下代码,并答复输出的内容(以及缘故起因)。

  1. // situation 1 
  2. console.log(person); 
  3. var person = 'John'; 
  4.  
  5. // situation 2 
  6. console.log(person); 
  7. let person = 'Phill'; 
  8.  
  9. // situation 3 
  10. console.log(person); 
  11. const person = 'Frank'; 
  12.  
  13. // situation 4 
  14. const person = 'Vanessa'; 
  15. console.log(person); 
  16. person = 'Mike'; 
  17. console.log(person); 
  18.  
  19. // situation 5 
  20. var person = 'John'; 
  21. let person = 'Mike'; 
  22. console.log(person); 
  23.  
  24. // situation 6 
  25. var person = 'John'; 
  26. if (person) { 
  27.   let person = 'Mike'; 
  28.   console.log(person); 
  29. console.log(person); 

声名

Situation 1: 预期功效是在节制台中看到文本 John,可是令人惊奇的是,我们看到记录了undefined。想知道为什么吗?

好吧,这是经典的 JavaScript 在起浸染。这种举动被称为晋升。在靠山,该说话将变量声明和值分派分为两部门。不管变量最初由开拓职员在那边声明,变量都将移动到顶部,声明时将其值配置为 undefined。看起来像这样:

  1. var person; 
  2. console.log(person); 
  3. person = 'John'; 

Situation 2: 在这里,功效将是引用错误。

  1. Uncaught ReferenceError: Cannot access 'person' before initialization 

错误文本声名白统统。由于我们行使了要害字 let,以是我们的变量被晋升,但没有初始化,而且抛出该错误,关照我们正在实行会见未初始化的变量。在 ES6 中引入了要害字 let,使我们可以或许行使块浸染域中的变量,从而辅佐我们防备意生手为。

在这里,我们会获得与 Situation 2 中沟通的错误。

差异之处在于我们行使了要害字 const,从而防备在初始化后从头分派变量。 ES6 中也引入了此要害字。

Situation 4: 在这种环境下,我们可以看到要害字 const 是怎样事变的,以及它怎样停止有时中从头分派变量。在我们的示例中,起首会在节制台中看到 Vanessa,然后是一个范例错误。

  1. Uncaught TypeError: Assignment to constant variable 

const 变量的行使跟着我们的代码库呈指数增添。

Situation 5: 假如已经在某个浸染域内行使要害字 var 界说了变量,则在统一浸染域顶用要害字 let 再次声明该变量将会激发错误。

因此,在我们的示例中,将不会输出任何内容,而且会看到语法错误提醒。

  1. Uncaught SyntaxError: Identifier 'person' has already been declared 

Situation 6: 我们别离有一个函数浸染域的变量,和块浸染域的变量。在这种环境下,它们是否有沟通的名字或标识符并不重要。

在节制台中,我们应该看到 Mike 和 John 被依次输出。为什么?

由于要害字 let 为我们提供了块浸染域内的变量,这意味着它们仅存在于本身建设的浸染域内,在这种环境下,位于if...else 语句中。内部变量优先于外部变量,这就是为什么我们可以行使沟通标识符的缘故起因。

2.担任

思量以下类,并实行答复输出了什么以及为什么。

  1. class Person { 
  2.   constructor() { 
  3.     this.sayHello = () => { 
  4.       return 'Hello'; 
  5.     } 
  6.   } 
  7.  
  8.   sayBye() { 
  9.     return 'Bye'; 
  10.   } 
  11.  
  12. class Student extends Person { 
  13.   sayHello() { 
  14.     return 'Hello from Student'; 
  15.   } 
  16.  
  17. const student = new Student(); 
  18. console.log(student.sayHello()); 

声名

假如你的谜底是 Hello,那是对的!

为什么T媚课我们建设一个新的 Student 实例时,城市将 sayHello 属性配置为是一个函数,并返回字符串 Hello。这是在父类(Person)类的结构函数中产生的。

(编辑:河北网)

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

热点阅读