JS 基本概念详细介绍
许多人在深入研究 javascript
之前忽略了 javascript
的理论方面。这些概念帮助我们了解构建 javascript
应用程序时所采用的不同路径和模式。这些模式存在于 js land
的每个框架中,因此在学习语言本身之前了解这些概念很有意义。
1、js的特点
1.1 多范式
javascript
支持过程式、面向对象和事件驱动的函数式编程!掌握 js
的面向对象编程风格是非常有益的。
面向对象编程可帮助程序员更轻松地可视化软件应用程序的组件。此外,学习 typescript
(javascript with types)可以让程序员轻松实现行业中最好的设计模式。这些设计模式用于以最有效的方式解决软件编程中遇到的最常见问题。
这种多功能性使 javascript
非常平易近人且非常强大。
1.2 解释
javascript
与 c/c++
不同,它不是一次读取程序,而是逐行解释。这就是说 js
会比 c/c++
等编译语言慢。
警告: javascript
因在运行时是一种极其被动的语言而臭名昭著,对错误进行故障排除非常困难。
不过随着时间和练习,你将学会如何流畅地运行。最常见的错误涉及你的变量返回null
值。当此类问题确实出现时,请前往 stack overflow
,因为我向你保证,无论错误多么离谱,你都不是第一个遇到错误的人。在你的项目进行开发时*地使用console.log()
也是一个好办法。这可以帮助您准确找出程序生命周期中的时刻,您的变量可能已经脱落。
1.3单线程
javascript
一次只能执行一项任务。它根据类型将不同的任务排队到不同的队列中。
在最抽象的意义上,javascript
基本上会将同步任务和异步任务分组,并将它们分开排队。
同步任务是在遇到它们时立即处理的语句,即它们立即运行。这些任务包括日志语句、变量声明、条件检查等。
异步任务涉及可能需要可变时间来返回输出的任务。异步任务的一个示例可能是从 web api
请求信息。
此外,javascript
还有一个 job queue
,用于处理名为 promises
的 js feature
。
通过右键单击此网页并点击检查选项卡,您实际上可以看到 javascript
的单线程特性。接下来,转到刚刚打开的窗口上的控制台选项卡。输入以下代码并按回车键。\
while(true) {}
您现在可以观察到此页面完全没有响应。这是因为此页面上的 javascript
现在正忙于运行我们上面执行的无限 while 循环。
1.4 非阻塞
我们之前已经讨论过异步任务。由于 js 在单线程环境中运行,默认情况下,它不会进行等待!
异步代码块只有在所有同步代码块都执行完后才会执行,而不管代码在程序中的位置如何。
console.log("我是第一个语句") settimeout(()=> { console.log("我是第二个语句") },1000) console.log("我是第三个语句")
这里console.log()
将其中的语句记录到控制台,settimeout()
函数在一秒钟后运行第二条语句。
在检查输出时
我是第一个语句 我是第三个语句 我是第二个语句
我们可以看到第三条语句在第二条语句之前记录。这是因为 js 处理同步和异步代码块的固有方法。
1.5 高级
javascript
是一种高级语言。高级语言可能只是意味着它们更接近人类所说的语言。高级语言能够提供更多功能来帮助程序员更好地表达他们正在尝试构建的内容。
javascript
的这种高级特性有助于它最好地服务于 web
的客户端部分。过去 js
的一个主要限制是它只能在客户端提供服务,而不能像大多数服务器端语言那样进行文件操作。
然而,这已经改变了nodejs
,允许开发人员使用 javascript
来构建后端服务器。因此,只需使用一种语言,软件开发人员就可以在服务器端和客户端进行操作。这导致全栈工程师变得突出。
1.6 动态类型
javascript
也是一种动态类型语言。这意味着与需要为变量指定数据类型的 c
不同,我们可以type-inference
在 javascript
中使用来自动检测数据的类型,变量保存。\
// 在 c 中变量必须有数据类型。 为了将数据类型从一种类型更改为另一种类型,我们需要使用类型转换 int a = 5; char b = "a"; float c = 7.036;
在 javascript
中,我们使用let
和const
分别声明变量或常量。\
let a = 5 console.log(a) // 5 a = 'hello world' console.log(a) // hello world const b = 'js 很酷' console.log(b) // js 很酷 b = '我改变主意了' console.log(b) // error: const cannot be changed
虽然类型推断因其易于使用而看起来是一个加分点,但它立即成为需要类型安全作为功能的大型项目的一个骗局。
出于这个原因,较大的项目使用 typescript
,它只是 javascript
的包装器,提供类型、接口和各种其他功能。
2、学习策略
在 js land
中安顿下来需要一段时间,但我有一个简单的清单,minimum requirements
用于学习 express
或 reactjs
等框架。
首先,不要急于学习这些框架。你需要花点时间掌握 vanilla javascript
。
3、基础知识
- 变量和常量
- 条件块(
if-else
) - 循环(
for
、while
、foreach
) - 开关盒(
switch case
) - 方法(
functions
)
高级部分(最低要求)
- 异步/等待
promises
-
javascript
中的类 -
rest
/spread
语法 - 数组/对象迭代器
- 数组解构
- 模块(导入、导出)
在构建项目时继续学习,很快你就会对语言有很强的掌握。
到此这篇关于js 基本概念详细介绍的文章就介绍到这了,更多相关js 基本概念内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!