JavaScript概念

  1. 调用栈执行每个人都听说过Stack Overflow这个网站。但是你知道实际的堆栈溢出吗?堆栈溢出是与调用堆栈的操作相关联的错误。通过理解堆栈调用,你将了解像JavaScript这样的高级语言是如何执行的。
  2. 原始数据类型const foo = “bar”;foo.length; // 3foo === “bar”; // true等等!当你把字符串bar赋值给常量foo时,foo是基本字符串类型。这是每个人都可以接受的。但是为什么可以访问字符串类型的length属性呢?是不是很奇怪。这个特性称为自动装箱。在上面的示例中,JavaScript将常量包装到一个临时包装器对象中,然后访问该对象的length属性。一旦这一步完成,对象将被安全地丢弃。通过深入了解基本数据类型,你将知道它们在二进制表示之前是如何在内存中存储的。你也会知道这些“奇怪”的情况是如何发生的,以及它们背后的逻辑原因。
  3. 3.值类型和引用类型最近,我对“通过引用传递”的概念在JavaScript中的工作方式有些困惑。虽然我知道C和Java等语言中“按引用传递”和“按值传递”的概念,但我不确定它在JavaScript中是如何工作的。你知道在JavaScript中,给一个变量赋一个非基本类型的值,实际上是赋了一个该值的引用吗?引用指向了存储值的内存位置。var arr1 = [1,2,3];var arr2 = arr1;arr2.push(10);console.log(arr2);//[1, 2, 3, 10]console.log(arr1);//[1, 2, 3, 10]正如你从上面的示例中看到的,对arr2所做的任何修改也将反映在arr1上。这是因为它们只持有对值的引用,而不是实际值本身。通过理解值类型和引用类型的概念,你将更好地理解变量是如何分配值和内存引用的。
    1. 强制类型转换这一概念主要解释了隐式和显式强制类型转换的区别。这是在用JavaScript时会出错的少数领域之一。对于隐式类型转换的概念尤其如此,因为对于不同的数据类型,它的行为方式不同。这是JavaScript面试中最常被面到的内容之一。Number(‘789’) // 显式转换+‘789’ // 隐式转换789 != ‘456’ // 隐式转换9 > ‘5’ // 隐式转换10/null // 隐式转换true | 0 // 隐式转换通过清楚地理解类型转换,那你已经了解了JavaScript最棘手的概念之一。
    1. 相等比较和’ typeof '操作符这个概念基本上解释了双等号和三等号的使用,以及在何时为什么使用它们。尽管在表面上看它们是相同的,并且在大多数时候会得出相同的结果,但是如果你在不知情的情况下使用它们,它们可能会给你带来意想不到的错误。你还应该能够使用typeof操作符并知道输出的可能性。但是当有对象时,它会让人感到困惑。typeof 3 // "number"typeof “abc” // "string"typeof {} // "object"typeof true // "boolean"typeof undefined // "undefined"typeof function(){} // "function"typeof [] // "object"typeof null // “object”
    1. JavaScript作用域作用域是一个概念,我相信,它在你JS旅程的开始阶段你就应该了解他。根据Wissam的说法,作用域的简单定义是,当编译器需要变量和函数时,它就是查找这个变量和函数的地方。理解作用域将允许你更有效地使用JavaScript。你应该了解全局作用域、块和函数作用域,也称为词法作用域。JS作用域一开始可能会让人很困惑,但是一旦你理解了它是如何工作的,使用它会非常令人兴奋。
    1. 语句和表达式这是JavaScript中的两个主要语法类别。你应该知道这两者之间的区别以及语句是如何计算的。这将允许你全面了解代码是如何被构造成表达式和语句的。你会注意到,你的大部分代码都是表达式,而相对而言,你使用的语句数量较少。你还可以避免由于不正确使用这两种方法而导致的错误。
    1. 立即调用函数表达式和模块立即调用的函数表达式是定义后立即运行的函数。它们主要用于避免污染全局作用域。后来,ES6模块被引入,提供了一种避免全局作用域污染的标准方法,尽管有些人认为它不是IIFEs的直接替代品。通过理解IIFEs和模块,你在开发应用程序中,可以遇到更少的由于全局作用域处理不当而导致的错误。然而,使用模块,你可以做很多事情。
    1. 消息队列和事件循环正如MDN文档所说,JavaScript有一个基于事件循环的并发模型,它负责执行代码、收集和处理事件以及执行排队的子任务。这个模型与其他语言(如C和Java)中的模型有很大的不同。在上述并发模型中,消息队列用于处理从最老的消息开始的消息。只要事件发生,并且有一个事件监听器监听它,消息就会被添加到队列中。通过理解这些概念,你可以更好地理解JS在底层是如何工作的,以及如何解释你的代码。
    1. 时间间隔要在JavaScript中调度一个调用或函数,可以使用两种方法。setTimeout允许我们在特定的时间间隔后运行函数一次。setInterval允许我们重复运行一个函数,在特定的时间间隔后开始运行,然后在该时间间隔内连续重复运行。这些与前面的消息队列和事件处理程序的概念有些关联。因此,通过理解时间间隔方法,我们可以理解它们是如何工作的,并在我们的用例中有效地使用它们。
    1. JavaScript引擎我们现在正在深入研究JavaScript。JavaScript引擎是执行JavaScript代码的计算机程序或解释器。JavaScript引擎可以用多种语言编写。例如,驱动Chrome浏览器的V8引擎是用c++编写的,而驱动Firefox浏览器的SpiderMonkey引擎是用C和c++编写的。对于你来说,了解你正在使用的是哪个JavaScript引擎来编写高效代码是非常重要的。使用webview的移动开发者应该特别注意这一点。
    1. 位操作这些操作将值视为位(0和1),而不是小数、十六进制或八进制数。位操作符在这种二进制表示上执行操作,但是它们返回标准的JavaScript数值。通常,你不会在代码中使用这些操作,但它们确实有一些用例。可以使用它们查找偶数和奇数值、颜色转换、颜色提取和配置标志。通过彻底了解这些位操作,你可以很好地使用WebGL等技术,因为它包含许多像素操作。
    1. DOM和布局树大多数人都听说过文档对象模型(DOM),但只有少数人深入了解它。你知道在浏览器中看到的不是DOM吗?而是渲染树,它实际上是DOM和CSSOM的组合。通过理解DOM的工作原理、结构以及页面的呈现方式,我们就能够在JavaScript的帮助下动态地操作web页面。这对于确保我们的应用程序具有高标准的性能尤为必要。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值