JS:JavaScript 简介

 前言

        在当今数字时代,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://xiahunao.cn/news/3269981.html

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

相关文章

智慧城管解决方案

1. 项目整体概述 智慧城管项目面临历史发展机遇&#xff0c;十九大提出以人为核心保障民生&#xff0c;推进新型城镇化。市民对政府服务有新诉求&#xff0c;同时云计算、物联网、移动互联网等技术迅速发展。 2. 传统城管业务模式问题 传统城管业务模式存在问题&#xff0c;…

leetcode106. 从中序与后序遍历序列构造二叉树,力扣105姊妹题

leetcode106. 从中序与后序遍历序列构造二叉树 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a;inorder [9,3,15,20,7…

【每日刷题】Day86

【每日刷题】Day86 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 118. 杨辉三角 - 力扣&#xff08;LeetCode&#xff09; 2. 数组中出现次数超过一半的数字_牛客题霸…

详解Mysql InnoDB引擎 04

文章目录 1. InnoDB 简介2. 逻辑存储结构2.1 表空间 idb文件2.2 段2.3 区 1M2.4 页 16KB2.5 行 3. 架构3.1 内存结构3.1.1 Buffer Pool 缓冲池3.1.2 Change Buffer 更改缓冲区3.1.3 Adaptive Hash Index3.1.4 Log Buffer 3.2 磁盘结构 4. 后台线程5. 事务原理5.1 redo log 重做…

C++的STL简介(一)

目录 1.什么是STL 2.STL的版本 3.STL的六大组件 4.string类 4.1为什么学习string类&#xff1f; 4.2string常见接口 4.2.1默认构造 ​编辑 4.2.2析构函数 Element access: 4.2.3 [] 4.2.4迭代器 ​编辑 auto 4.2.4.1 begin和end 4.2.4.2.regin和rend Capacity: 4.2.5…

LangChain曝关键漏洞,数百万AI应用面临攻击风险

LangChain是一个流行的开源生成式人工智能框架&#xff0c;其官网介绍&#xff0c;有超过一百万名开发者使用LangChain框架来开发大型语言模型&#xff08;LLM&#xff09;应用程序。LangChain的合作伙伴包括云计算、人工智能、数据库和其他技术开发领域的许多知名企业。 近日&…

前端模块化CommonJS、AMD、CMD、ES6

在前端开发中&#xff0c;模块化是一种重要的代码组织方式&#xff0c;它有助于将复杂的代码拆分成可管理的小块&#xff0c;提高代码的可维护性和可重用性。CommonJS、AMD&#xff08;异步模块定义&#xff09;和CMD&#xff08;通用模块定义&#xff09;是三种不同的模块规范…

数据库设计过程概述

1.首先进行需求分析&#xff0c;通过数据流图&#xff0c;数据字典&#xff0c;需求说明书等确定数据处理要求 2.概要结构设计 3.逻辑结构设计 4.物理设计

计算机二级题--结构体及链表 章节

之前写的有结构体全部的知识点&#xff0c;这一篇主要针对计算机二级真题的整理。 需要备考计算机二级的小伙伴们先收藏起来吧。整理不易&#xff0c;不过有帮助记得点赞哦 高频考点&#xff08;容易出错&#xff0c;附有例题&#xff09; 1.结构体传参&#xff0c;传值的区…

数字图像处理中的常用特殊矩阵及MATLAB实现详解

一、前言 Matlab的名称来源于“矩阵实验室&#xff08;Matrix Laboratory&#xff09;”&#xff0c;其对矩阵的操作具有先天性的优势&#xff08;特别是相对于C语言的数组来说&#xff09;。在数字图像处理中&#xff0c;为了提高编程效率&#xff0c;我们可以使用多种方式来创…

MATLAB基础:函数与函数控制语句

今天我们继续学习Matlab中函数相关知识。 API的查询和调用 help 命令是最基本的查询方法&#xff0c;可查询所有目录、指定目录、命令、函数。 我们直接点击帮助菜单即可查询所需的API函数。 lookfor 关键字用于搜索相关的命令和函数。 如&#xff0c;我们输入lookfor inpu…

JDK的配置

安装好JDK后&#xff0c;配置三个环境变量 第一步&#xff0c;配置JAVA_HOME. 先找到JDK的安装目录&#xff0c;然后复制路径&#xff0c;在电脑的环境变量里增添变量名为JAVA_HOME,变量值为 C:\Program Files\Java\jdk1.8.0_192。&#xff08;具体根据你的JDK安装路径&…

使用flutter做圆形进度条 (桌面端)

前言 最近收到一个需求&#xff0c;需要使用flutter 来做一个圆形进度条&#xff0c;这可难倒我了&#xff0c;毕竟我是做前端的&#xff0c;flutter 之前接触的也少&#xff0c;但没办法&#xff0c;既然需求有了&#xff0c;也得硬着头皮上了&#xff0c;先来看看做的效果。…

一些电脑的操作技巧,你知道吗?

我整理了几个电脑使用的实用技巧&#xff0c;能够帮你提升办公效率&#xff0c;一起来看看吧&#xff01; 技巧一&#xff1a;反方向移动单元格 一般来讲&#xff0c;我们按下【Tab】键、【Enter】键的时候&#xff0c;会切换到右边或者下边的单元格&#xff0c;想要反向移动…

c-periphery RS485串口库文档serial.md(serial.h)(非阻塞读)(VMIN、VTIME)

c-peripheryhttps://github.com/vsergeev/c-periphery 文章目录 NAMESYNOPSISENUMERATIONS关于奇偶校验枚举类型 DESCRIPTIONserial_new()serial_open()关于流控制软件流控制&#xff08;XON/XOFF&#xff09;硬件流控制&#xff08;RTS/CTS&#xff09;选择流控制方法 serial_…

基于Java+SpringMvc+Vue技术的慈善捐赠平台设计与实现(源码+LW+部署讲解)

项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功以及课程答疑&#xff01; 软件开发环境及开发工具&#xff1a; 操作系统&#xff1a;Windows 10、Windows 7、Windows 8 开发语言&#xff1a;java 前端技术&#xff1a;JavaScript、VUE.j…

水源地(水库)水质、水位、流量监测系统

随着全球气候变化和工业化进程的加速&#xff0c;水库作为重要的水资源储备和调节设施&#xff0c;其水质、水位和流量的监测与管理显得尤为重要。水库水质、水位、流量综合监测系统正是在这样的背景下应运而生&#xff0c;旨在实现对水库水资源的全面、实时、准确的监测与管理…

【吊打面试官系列-Dubbo面试题】Dubbo 服务降级,失败重试怎么做?

大家好&#xff0c;我是锋哥。今天分享关于 【Dubbo 服务降级&#xff0c;失败重试怎么做&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; Dubbo 服务降级&#xff0c;失败重试怎么做&#xff1f; 可以通过 dubbo:reference 中设置 mock"return null"…

基于微信小程序+SpringBoot+Vue的自助点餐系统(带1w+文档)

基于微信小程序SpringBootVue的自助点餐系统(带1w文档) 基于微信小程序SpringBootVue的自助点餐系统(带1w文档) 基于微信小程序的自助点餐系统前后台分离&#xff0c;让商品订单&#xff0c;用户反馈信息&#xff0c;商品信息等相关信息集中在后台让管理员管理&#xff0c;让用…

【杰理蓝牙开发】AC695x 音频部分

本文主要记录 杰理蓝牙audio接口的使用&#xff0c;包括ADC和DAC原理的介绍和API接口的使用。 【杰理蓝牙开发】AC695x 音频部分 0. 个人简介 && 授权须知1. ADC【音频数据采集】硬件部分1.1 单片机引脚1.2 硬件电路设计1.3 MIC 输入通路解释 2. 【DAC】音频信号编解码…