JS:JavaScript 简介

news2024/11/15 20:25:50

 前言

        在当今数字时代,JavaScript已然成为了现代Web开发的基石。从最初作为浏览器中的一个小型脚本语言,到如今成为驱动全球互联网的强大引擎,JavaScript的发展历程本身就是一个令人着迷的故事。

好了开始学习JS吧

      1.  如果刚开始了解js,最好看视频对这门语言有个大致了解,这里就不推荐视频资源了,bilibili&YouTube,自行探索吧。

       2. 推荐看该文档 JavaScript.info,跟着文档步骤学习,切记要跟着敲代码实际哦,完成前面两步,可能用不了几天

      3. 项目实战,这里就推荐Github上找了,后续以项目式的学习方法,可以帮助你更好的掌握js


为什么学JavaScript?

  1. 多样性和普遍性:JavaScript的应用范围极广,从前端到后端,从web到移动应用,甚至延伸到桌面应用和IoT领域。这种多样性意味着学习JavaScript可以为你打开多个职业方向的大门。
  2. 就业前景:由于其普遍性,JavaScript开发者的需求量大,就业前景良好。无论是初创公司还是大型科技公司,都在寻找精通JavaScript的人才。
  3. 持续发展:JavaScript生态系统不断发展,新的框架、工具和技术不断涌现。这意味着作为JavaScript开发者,你将始终处于技术前沿,有机会学习和应用最新的技术。
  4. 社区支持:JavaScript拥有世界上最大和最活跃的开发者社区之一。这意味着你可以轻松找到资源、解决问题,并与其他开发者交流学习。
  5. 灵活性:JavaScript的动态性和灵活性使得它能够快速适应不同的编程范式和应用场景,从面向对象编程到函数式编程都能胜任。
  6. 低入门门槛:相比一些其他编程语言,JavaScript的基础语法相对简单,对新手友好。这使得它成为许多人学习编程的首选语言。
  7. 创新潜力:JavaScript在Web3、人工智能和其他新兴技术领域也有着广泛的应用,学习JavaScript可以让你参与到这些创新领域的开发中。

        考虑到这些因素,学习JavaScript不仅可以提升你的技术技能,还可以为你的职业发展提供广阔的机会。无论你是想成为一名前端开发者、全栈工程师,还是想探索新兴的技术领域,JavaScript都是一个极好的选择。

什么是JavaScript?

        JavaScript 最初是为了“让网页活起来”而创建的。 这种语言的程序称为脚本。它们可以直接编写在网页的 HTML 中,并在页面加载时自动运行。
        脚本以纯文本形式提供和执行。它们不需要特殊的准备或编译即可运行。
在这方面,JavaScript 与另一种称为 Java 的语言非常不同。

为什么叫JavaScript?
        当 JavaScript 被创建时,它最初有另一个名字:“LiveScript”。但是Java在当时非常流行,因此决定将新语言定位为Java的“弟弟”会有所帮助。
        但随着它的发展,JavaScript 成为一种完全独立的语言,拥有自己的规范,称为 ECMAScript,现在它与 Java 完全没有关系。

JavaScript引擎


        今天,JavaScript 不仅可以在浏览器中执行,还可以在服务器上执行,或者实际上在任何具有称为 JavaScript 引擎的特殊程序的设备上执行。

        JavaScript引擎(也称为JavaScript的虚拟机)是现代Web开发和Node.js应用程序的核心组件。它负责解析、编译和执行JavaScript代码,并管理内存分配等底层操作。

        每个主要的浏览器厂商都有自己的JavaScript引擎实现,这导致了一些有趣的竞争和创新。
不同的引擎有不同的“代号”。例如:  

  • Google的V8引擎因其高性能而闻名,它不仅用于Chrome浏览器,还是Node.js的核心组件,使JavaScript能够在服务器端高效运行。
  • Mozilla的SpiderMonkey是最古老的JavaScript引擎,它随着Web的发展不断演进,为Firefox提供强大的JavaScript执行能力。
  • Apple的JavaScriptCore(也称为Nitro)在Safari浏览器中使用,也被用于许多iOS应用程序中。
  • Facebook的Hermes引擎是专为移动环境优化的,特别是在React Native应用中,它能提供更快的启动时间和更低的内存使用。

        上面的术语最好记住,因为它们用于 Internet 上的开发人员文章。我们也会使用它们。例如,如果“V8 支持某个功能 X”,那么它可能在 Chrome、Opera 和 Edge 中工作。

JavaScript引擎的工作原理

引擎很复杂。但基本原理很简单。

  1. 解析:将JavaScript代码转换为抽象语法树(AST)
  2. 编译:将AST转换为字节码或直接编译为机器码
  3. 执行:运行编译后的代码
  4. 优化:使用技术如即时编译(JIT)来提高性能
  5. 内存管理:进行垃圾回收,优化内存使用

引擎在流程的每个步骤中应用优化。它甚至可以在编译脚本运行时进行监视,分析流经它的数据,并根据这些知识进一步优化机器代码。

浏览器的JavaScript能做什么?

        现代 JavaScript 是一种“安全”的编程语言。它不提供对内存或 CPU 的低级访问,因为它最初是为不需要它的浏览器创建的。

        JavaScript 的功能很大程度上取决于所处的环境。例如,Node.js支持允许 JavaScript 读取/写入任意文件、执行网络请求等的函数。

        浏览器内 JavaScript 可以执行与网页操作、与用户交互以及 Web 服务器相关的所有操作。

        例如,浏览器内的 JavaScript 能够:

  • 向页面添加新的 HTML,更改现有内容,修改样式。
  • 对用户操作做出反应,在鼠标点击、指针移动、按键时运行。
  • 通过网络向远程服务器发送请求,下载和上传文件(所谓的 AJAX 和 COMET 技术)。
  • 获取和设置 cookie,向访客提问,显示消息。
  • 请记住客户端(“本地存储”)上的数据。

浏览器内 JavaScript 不能做什么?

        JavaScript 在浏览器中的能力受到限制,以保护用户的安全。目的是防止邪恶的网页访问私人信息或损害用户的数据。此类限制的示例包括:

  • 文件系统访问:网页上的JavaScript不能读取/写入硬盘上的任意文件,复制它们或执行程序。它无法直接访问操作系统功能。

  • 浏览器标签页/窗口操作:现代浏览器允许它处理文件,但访问权限是有限的,并且仅在用户执行某些操作时提供,例如将文件“拖放”到浏览器窗口中或通过 <input> 标签选择它。
    有一些方法可以与摄像头/麦克风和其他设备进行交互,但它们需要用户的明确许可。

  • 跨域请求:不同的选项卡/窗口通常彼此不了解。有时他们会这样做,例如,当一个窗口使用 JavaScript 打开另一个窗口时。但即使在这种情况下,如果一个页面的 JavaScript 来自不同的站点(来自不同的域、协议或端口),它们可能无法访问另一个页面。

Same Origin Policy  

        这被称为“Same Origin Policy”。为了解决这个问题,两个页面必须同意进行数据交换,并且必须包含处理它的特殊 JavaScript 代码。

        默认情况下,不能向不同源的服务器发送 AJAX 请求,需要服务器端配置 CORS(跨源资源共享)才能实现跨域请求

        同样,此限制是为了用户的安全。用户打开的页面 http://javascript.info 不得使用 URL http://gmail.com 访问另一个浏览器选项卡 ,例如,并从那里窃取信息。

  • 网络访问限制:JavaScript 可以很容易地通过网络与当前页面所在的服务器进行通信。但是它从其他站点/域接收数据的能力受到削弱。虽然可能,但它需要来自远程端的明确协议(以 HTTP 标头表示),这是一个安全限制

        如果在浏览器之外(例如在服务器上)使用 JavaScript,则不存在此类限制。现代浏览器还允许可能需要扩展权限的插件/扩展,但需要用户安装并授权

JavaScript的不同之处

JavaScript 至少有三个优点:

  • 与 HTML/CSS 完全集成。
  • 简单的事情都做得很简单。
  • 受所有主流浏览器支持,并默认启用。

        JavaScript 是唯一将这三件事结合在一起的浏览器技术。这就是 JavaScript 的独特之处。这就是为什么它是创建浏览器界面的最广泛的工具。也就是说,JavaScript 可用于创建服务器、移动应用程序等。

基于 javascript 的语言


        JavaScript 的语法并不适合每个人的需求。不同的人想要不同的功能。因为每个人的项目和需求都不同。因此,出现了大量的新语言,这些语言在浏览器中运行之前会被转译(转换)为 JavaScript。

        它们通常会引入一些JavaScript本身不具备的特性,比如静态类型检查、更简洁的语法或者函数式编程的概念。

        现代工具使转译变得非常快速和透明,实际上允许开发人员使用另一种语言进行编码,并在“引擎盖下”自动转换它。

        常见的基于JavaScript的语言

TypeScript

  • 微软开发的静态类型检查语言
  • 添加了可选的静态类型、类和接口等特性
  • 编译成纯JavaScript

CoffeeScript

  • 简化JavaScript语法的语言
  • 强调简洁性和可读性
  • 编译成等效的JavaScript代码

Dart

  • 谷歌开发的面向对象语言
  • 可以编译成JavaScript,也可以直接运行
  • 用于web和移动应用开发

ClojureScript

  • Clojure语言到JavaScript的编译器实现
  • 函数式编程范式
  • 利用Clojure的强大特性来开发web应用


        还有更多。当然,即使我们使用这些转译语言中的一种,我们也应该了解 JavaScript 以真正理解我们在做什么。建议在掌握 JavaScript 之后至少简要地看一下它们。

JavaScript 学习资源

1. 文档

  • MDN Web Docs: Mozilla提供的详细JavaScript文档和教程
  • JavaScript.info: 现代JavaScript教程,从基础到高级(推荐)
  • W3Schools: 简单易懂的JavaScript教程和参考
  • 菜鸟教程: 中文JavaScript教程,适合初学者

2. 书籍

  • 《JavaScript高级程序设计》(红宝书)
  • 《你不知道的JavaScript》系列
  • 《Eloquent JavaScript》(雄辩的JavaScript)
  • 《JavaScript忍者秘籍》

3. 博客和文章

  • Medium: 大量JavaScript相关文章和教程
  • DEV Community: 开发者分享的JavaScript技巧和经验
  • CSS-Tricks: 虽然主要关注CSS,但也有很多优质的JavaScript内容

4. 播客

  • JavaScript Jabber
  • Syntax.fm
  • JS Party

5. GitHub仓库

  • You-Dont-Know-JS: 深入探讨JavaScript核心机制
  • 33-js-concepts: 每个JavaScript开发者应该知道的33个概念
  • clean-code-javascript: JavaScript版的代码整洁之道

6. 框架和库学习

  • React官方文档
  • Vue.js官方指南
  • Angular官方教程
  • Node.js官方文档

7. 社区和论坛

  • Stack Overflow
  • Reddit的r/javascript子版块
  • Discord的JavaScript社区

后续还会完善。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1956517.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Node.js自动化处理TOML文件

在软件开发过程中&#xff0c;自动化处理配置文件是一种常见的需求。TOML&#xff08;Tom’s Obvious, Minimal Language&#xff09;是一种用于配置文件的简单易读的格式。本文将展示如何使用Node.js和一些流行的库来自动化读取、修改并写入TOML文件。 1. 准备工作 在开始之前…

IAR工程设置

这篇记录一下工作中对IARide的工程设置的配置步骤。 所以这不是一篇通用的文章&#xff0c;只是个人记录。 目的&#xff1a;为了是ARM仿真器能够下载调试锐能微的芯片 一、工程设置 1、更改boot文件的工程设置&#xff1a; 2、编译boot文件 3、配置8213B的工程设置&#x…

iPhone 16 Pro Max电池大揭秘,听说迎来了有史以来最持久的续航

智能手机市场的竞争日益激烈&#xff0c;各大厂商都在寻求创新以保持领先地位。而苹果公司即将推出的iPhone 16 Pro Max&#xff0c;则以其革命性的不锈钢电池壳和电诱导粘合剂脱离技术&#xff0c;再次刷新了我们对智能手机电池技术的认知。 一、不锈钢电池壳的突破 苹果公司…

Windows系统编程API 学习之路

目录 I. 基础 进程 动态链接库 线程 Windows应用程序开发 初入Windows编程 使用strings C/C运行时中的字符串 安全字符串函数 32位与64位开发 定义自定义错误代码 I. 基础 Windows NT操作系统系列有着悠久的历史&#xff0c;从1993年推出的3.1版本开始。今天的Windo…

如何主持收集故事研讨会

如何主持收集故事研讨会 引言 在文化的长河中,故事是传承知识、情感与智慧的桥梁。收集故事不仅是对过去的回顾,更是对未来灵感的启迪。组织一场收集故事研讨会,旨在汇聚各界人士,共同挖掘、整理并分享那些触动人心、富有意义的故事。作为这样一场活动的主持人,您的角色…

C++开源界面库duilib的使用细节与实战技巧总结(实战经验分享)

目录 1、使用CEditUI编辑框 2、使用CLabelUI或CTextUI的Html文本效果 3、使用CTextUI控件对文字宽度自适应的特性 4、CRichEditUI富文本控件使用注意点 4.1、指定CRichEditUI加在2.0版本的Riched20.dll库 4.2、解决向CRichEditUI中插入文字后显示空白的问题 5、设置窗口…

拓扑排序+dp(消除主观臆断)

这题一开始写错的原因就是搞错了&#xff0c;处于西边的节点的编号不一定小&#xff0c;不能直接dp&#xff0c;要先进行拓扑排序 写到一般我才发现&#xff0c;其实可以一边dp&#xff0c;一边进行dp #define _CRT_SECURE_NO_WARNINGS #include<bits/stdc.h> using name…

信息安全工程师下午题

试题一(共 20 分) 阅读下列说明和图&#xff0c;回答问题 1 至问题 5&#xff0c;将解答填入答题纸的对应栏内。【说明】已知某公司网络环境结构主要由三个部分组成&#xff0c;分别是 DMZ 区、内网办公区和生产区&#xff0c;其拓扑结构如图 1-1 所示。信息安全部的王工正在按…

无人机像素经纬度识别

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…

代码随想录——组合总和 Ⅳ(Leetcode377)

题目链接 动态规划 class Solution {public int combinationSum4(int[] nums, int target) {int[] dp new int[target 1];dp[0] 1;for(int i 0; i < target; i){for(int j 0; j < nums.length; j){if(i > nums[j]){dp[i] dp[i - nums[j]];} }}return dp[targ…

【原创】java+ssm+mysql医生信息管理系统设计与实现

个人主页&#xff1a;程序员杨工 个人简介&#xff1a;从事软件开发多年&#xff0c;前后端均有涉猎&#xff0c;具有丰富的开发经验 博客内容&#xff1a;全栈开发&#xff0c;分享Java、Python、Php、小程序、前后端、数据库经验和实战 开发背景&#xff1a; 随着信息技术的…

【Golang 面试 - 基础题】每日 5 题(七)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…

ajax请求成功但不执行success-function回调函数

目录 一、问题分析 二、处理问题 一、问题分析 在测试员工管理系统的登录和注册代码时&#xff0c;登录一切正常&#xff0c;就是注册成功后没有跳转页面&#xff0c;后面发现是success-function回调函数没有正常执行。原因主要是前端和后端交流的数据格式不一致&#xff0c;…

GNSS位移监测站:毫米级位移监测

推荐型号&#xff1a;TH-WY1】GNSS位移监测站是一种利用全球导航卫星系统&#xff08;GNSS&#xff09;进行高精度位移监测的设备。这些系统能够实现毫米级甚至亚毫米级的位移监测&#xff0c;广泛应用于大坝安全监测、桥梁健康检测、滑坡预警等领域。以下是GNSS位移监测站的主…

电力红外热成像手持终端是什么?有什么作用?

电力红外热成像手持终端&#xff0c;即手持红外热成像仪&#xff0c;在电力行业中扮演着重要角色。这种设备利用红外辐射技术实时捕捉物体&#xff08;特别是电力设备&#xff09;表面的热能分布&#xff0c;并将其转化为可视化的热像图&#xff0c;从而帮助用户进行非接触式的…

Llama3代码库一夜成名,Kapathy一键点赞,GitHub星标突破2千

让大神 Andrej Karpathy 一键三连❤️&#xff08;点赞 转发 评论&#xff09;&#xff0c;一个教你从头开始实现 Llama3 的代码库爆火。 X 上转赞收藏量超 6.8k&#xff0c;GitHub 揽星 2k。 火就火在&#xff0c;它教你从头用 Meta 开源的权重进行推理&#xff0c;详细解释…

InternLM-L0 Python作业

任务类型 任务内容 闯关任务 Python实现wordcount 闯关任务 Vscode连接InternStudio debug笔记 1. Python实现wordcount 基于作业 InternLM-L0 linux作业 &#xff0c;创建Python文件输入如下代码&#xff0c;并用Python 脚本运行&#xff1a; text """ Go…

新手vue学习问题汇总(自用)(长期更新)

1.export default export default 是 ES6 模块语法&#xff0c;用于导出模块的默认成员。在 Vue.js 中&#xff0c;通常用来导出一个组件对象&#xff0c;使其可以在其他文件中被导入并使用。 2.props props 是组件接收外部数据的方式。父组件可以通过向子组件传递 props 来…

电阻上的数字意义及电阻值辨别方法

电阻是电子电路中的基本元件&#xff0c;其阻值的大小直接影响电路的工作状态。电阻上的数字信息对于电路设计和维修至关重要。本文将详细解读电阻上数字的意义&#xff0c;并介绍如何通过数字辨别电阻值。 一、电阻上数字的意义 电阻上的数字通常表示电阻的阻值、功率、误差等…

C++STL详解(五)——list类的接口详解

一.list的介绍 list容器的底层是双向循环带头链表&#xff0c;在CPP中&#xff0c;我们对双向循环带头链表进行了一定程度的封装。 如果你不了解双向链表&#xff0c;那么可以浏览此片博文&#xff1a;双向链表 二.list的定义方式以及赋值 2.1list的构造方式 在这里我们要…