JavaScript邂逅

文章目录

  • Javascript内容
    • 邂逅JavaScript
      • 前端的三大核心
      • 计算机语言
      • 认识编程语言
      • 常见的编程语言
      • 编程语言的发展历史–机器语言
        • 阶段一: 机器语言
      • 编程语言的发展历史–汇编语言
        • 阶段二:汇编语言
      • 汇编语言的发展历史–高级语言
        • 阶段三:高级语言
      • 机器语言和高级语言
  • 认识JavaScript
    • JavaScript的起源(一)
    • JavaScript的起源(二)
    • JavaScript的历史(三)
    • JavaScript的起源(四)
  • JavaScript的组成
    • JavaScript由谁来运行?
  • 认识JavaScript引擎
  • 浏览器内核和JS引擎的关系
  • Javascript的应用

Javascript内容

邂逅JavaScript

前端的三大核心

前端开发最主要需要掌握的是三个知识点:HTML、CSS、JavaScript
在这里插入图片描述

计算机语言

HTML和CSS很多相关的知识:
在之前我们提到过, HTML是一种标记语言, CSS也是一种样式语言;

他们本身都是属于计算机语言, 因为都在和计算机沟通交流;

在生活中两个人想要沟通, 必然是通过某一种语言(中文/英语/粤语/东北话)
计算机语言就是我们人和计算机进行交流要学习的语言;

网页的三大组成部分的另外一个核心就是JavaScript:JavaScript必然也是一种计算机语言;
在这里插入图片描述

认识编程语言

**JavaScript我们可以对其有更加精准的说法:一种编程语言.

我们先搞清楚计算机语言和编程语言的关系和区别:

计算机语言:计算机语言(computer language)指用于人与计算机之间通讯的语言,是人与计算机之间传递信息的介质。但是其概念比通用的编程语言要更广泛。例如,HTML是标记语言,也是计算机语言,但并不是编程语言。
编程语言:编程语言(英语:programming language),是用来定义计算机程序的形式语言。它是一种被标准化的交流技巧,用来向计算机发出指令,一种能够让程序员准确地定义计算机所需要使用数据的计算机语言,并精确地定义在不同情况下所应当采取的行动

◼编程语言的特点:
数据和数据结构
指令及流程控制
引用机制和重用机制
设计哲学

这样的区分是否有意义呢?我们这里不讨论

常见的编程语言

在这里插入图片描述
在这里插入图片描述

编程语言的发展历史–机器语言

阶段一: 机器语言

计算机的存储单元只有0和1两种状态,因此一串代码要让计算机“读懂”,这串代码只能由数字0和1组成。
像这种由数字0和1按照一定的规律组成的代码就叫机器码,也叫二进制编码。
一定长度的机器码组成了机器指令,用这些机器指令所编写的程序就称为机器语言。
在这里插入图片描述
◼ 优点:

代码能被计算机直接识别,不需要经过编译解析;
直接对硬件产生作用,程序的执行效率非常高;

◼ 缺点:
程序全是些0和1的指令代码,可读性差,还容易出错;
不易编写(目前没有人这样开发); JavaScript的历史

编程语言的发展历史–汇编语言

阶段二:汇编语言

为了解决机器语言的缺陷,人们发明了另外一种语言——汇编语言。
这种语言用符号来代替冗长的、难以记忆的0、1代码。(mov/push指令,经过汇编器,汇编代码再进一步转成0101)
在这里插入图片描述
◼ 优点:

像机器语言一样,可以直接访问、控制计算机的各种硬件设备;
占用内存少,执行速度快;

◼ 缺点:

第一,不同的机器有不同的汇编语言语法和编译器,代码缺乏可移植性
也就是说,一个程序只能在一种机器上运行,换到其他机器上可能就不能运行;
第二,符号非常多、难记
即使是完成简单的功能也需要大量的汇编语言代码,很容易产生BUG,难于调试;

◼ 应用场景
操作系统内核、驱动程序、单片机程序;

汇编语言的发展历史–高级语言

阶段三:高级语言

最好的编程语言应该是什么?
自然语言;

而高级语言, 就是接近自然语言, 更符合人类的思维方式
跟和人交流的方式很相似, 但是大多数编程语言都是国外发明的, 因为都是接近于英文的交流方式
在这里插入图片描述
◼ 优点:

简单、易用、易于理解,语法和结构类似于普通英文;
远离对硬件的直接操作,使得一般人经过学习之后都可以编程,而不用熟悉硬件知识;
一个程序还可以在不同的机器上运行,具有可移植性;

◼ 缺点:

程序不能直接被计算机识别,需要经编译器翻译成二进制指令后,才能运行到计算机上;
种类繁多:JavaScript 、 C语言、C++、C#,Java、Objective-C 、Python

机器语言和高级语言

在这里插入图片描述

认识JavaScript

维基百科对JavaScript的定义:
JavaScript(通常缩写为JS)是一种高级的、解释型的编程语言;
JavaScript是一门基于原型、头等函数的语言,是一门多范式的语言,它支持面向对象程序设计,指令式编程,以及函数式编程;

◼ 从上面的定义中, 我们会发现很多关键词:
解释型语言? 原型? 头等函数? 多范式? 面向对象程序设计? 指令式编程? 函数式编程?
这些改变往往会让人不知所云,需要我们完全掌握JavaScript再来回头看,每一个词语描述的都非常准确;
◼ 现在只需要知道,通俗的说法:
JavaScript是一门高级编程语言, 是前端开发的重要组成部分!
◼ HTML和CSS也是前端开发的重要组成部分, 而JavaScript是前端开发的灵魂 JavaScript基础
Javascript编程方式

JavaScript的起源(一)

1994年,网景公司(Netscape)发布了Navigator浏览器0.9版。
这是历史上第一个比较成熟的网络浏览器,轰动一时。但是,这个版本的浏览器只能用来浏览,不具备与访问者互动的能力。
网景公司急需一种网页脚本语言,使得浏览器可以与网页互动。
在这里插入图片描述

JavaScript的起源(二)

网景公司当时想要选择一种语言来嵌入到浏览器中:
采用现有的语言,比如Perl、Python、Tcl、Scheme等等, 允许它们直接嵌入网页;
1995年网景公司招募了程序员Brendan Eich,希望将Scheme语言作为网页脚本语言的可能性;

◼ 就在这时,发生了另外一件大事:1995年Sun公司将Oak语言改名为Java,正式向市场推出;
Java推出之后立马在市场上引起了轰动,Java当初有一个口号:“write once run anywhere”;

网景公司动了心,决定与Sun公司结成联盟,希望将Java嵌入到网页中来运行;
Brendan Eich本人非常热衷于Scheme,但是管理层那个时候有点倾向于Java,希望可以简化Java来适应网页脚本的需求;
在这里插入图片描述

JavaScript的历史(三)

Brendan Eich对此并不感兴趣,他用10天时间设计出来了JavaScript;
最初这门语言的名字是Mocha(摩卡);
在Navigator2.0 beta版本更名为LiveScript;
在Navigator2.0 beta 3版本正式重命名为JavaScript,当时是为了给这门语言搭上Java这个热词;

◼ 当然10天设计出来语言足够说明Brendan Eich是天才,但是这门语言当时更像是一个多种语言的大杂烩;
借鉴C语言的基本语法;
借鉴Java语言的数据类型和内存管理;
借鉴Scheme语言,将函数提升到"第一等民"(first class)的地位;
借鉴Self语言,使用基于原型(prototype)的继承机制。

◼ Brendan Eich曾经这样描述过JavaScript:
与其说我爱Javascript,不如说我恨它,它是C语言和Self语言一夜情的产物;

JavaScript的起源(四)

微软公司于1995年首次推出Internet Explorer,从而引发了与Netscape的浏览器大战。
微软对Netscape Navigator解释器进行了逆向工程,创建了JScript,以与处于市场领导地位的网景产品同台竞争;这个时候对于开发者来说是一场噩耗,因为需要针对不同的浏览器进行不同的适配;

◼ 1996年11月,网景正式向ECMA(欧洲计算机制造商协会)提交语言标准。
1997年6月,ECMA以JavaScript语言为基础制定了ECMAScript标准规范ECMA-262;
ECMA-262是一份标准,定义了ECMAScript;
JavaScript成为了ECMAScript最著名的实现之一;
除此之外,ActionScript和JScript也都是ECMAScript规范的实现语言;

◼ 所以说,ECMAScript是一种规范,而JavaScript是这种规范的一种实现。

JavaScript的组成

ECMAScript是JavaScript的标准,描述了该语言的语法和基本对象。

JavaScript是ECMAScript的语言层面的实现;
因为除了语言规范之外,JavaScript还需要对页面和浏览器进行各种操作;还包括DOM操作和BOM操作;
目前我们会针对性的学习ECMAScript,也就是语言层面的内容,特别是ES5之前的语法。
在这里插入图片描述
在这里插入图片描述
学习过程:JavaScript基础,值类型/引用类型
BOM,Dom,HTML+css+浏览器本身,api调用工具
JavaScript高级底层/v8/浏览器底层/内存管理/es6-es12/13,手写源码

JavaScript由谁来运行?

不同的浏览器有不同的内核组成

Gecko:早期被Netscape和Mozilla Firefox浏览器浏览器使用;
Trident:微软开发,被IE4~IE11浏览器使用,但是Edge浏览器已经转向Blink;
Webkit:苹果基于KHTML开发、开源的,用于Safari,Google Chrome之前也在使用;
Blink:是Webkit的一个分支,Google开发,目前应用于Google Chrome、Edge、Opera等;
等等…

◼ 事实上,我们经常说的浏览器内核指的是浏览器的排版引擎:

排版引擎(layout engine),也称为浏览器引擎(browser engine)、页面渲染引擎(rendering engine)或样版引擎。

◼ 那么,JavaScript代码由谁来执行呢?

JavaScript引擎

认识JavaScript引擎

◼ 为什么需要JavaScript引擎呢?
高级的编程语言都是需要转成最终的机器指令来执行的;
我们编写的JavaScript无论你交给浏览器或者Node执行,最后都是需要被CPU执行的;但是CPU只认识自己的指令集,实际上是机器语言,才能被CPU所执行;
所以我们需要JavaScript引擎帮助我们JavaScript代码翻译成CPU指令来执行;

◼ 比较常见的JavaScript引擎有哪些呢?

SpiderMonkey:第一款JavaScript引擎,由Brendan Eich开发(也就是JavaScript作者);
Chakra:微软开发,用于IT浏览器;
JavaScriptCore:WebKit中的JavaScript引擎,Apple公司开发;
V8:Google开发的强大JavaScript引擎,也帮助Chrome从众多浏览器中脱颖而出;
等等…

浏览器内核和JS引擎的关系

以WebKit为例,WebKit事实上由两部分组成的:

WebCore:负责HTML解析、布局、渲染等等相关的工作;
JavaScriptCore:解析、执行JavaScript代码;

◼ 小程序中也是这样的划分:

在小程序中编写的JavaScript代码就是被JSCore执行的;
在这里插入图片描述
在这里插入图片描述

Javascript的应用

在这里插入图片描述
小编持续更新JavaScript一套学习专栏,希望能对大家有所帮助!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大数据做「AI大模型」数据清洗调优基础篇

关于本文 近期一直在协助做AI大模型数据清洗调优的工作,主要就是使用大数据计算引擎Spark做一些原始数据的清洗工作,整体数据量大约6PB-8PB之间,那么对于整个大数据量的处理性能将是一个重大的挑战,关于具体的调优参数配置项暂时不…

面向对象特征一:封装性

9.1 为什么需要封装? 我要用洗衣机,只需要按一下开关和洗涤模式就可以了。有必要了解洗衣机内部的结构吗?有必要 碰电动机吗? 我要开车,我不需要懂离合、油门、制动等原理和维修也可以驾驶。 客观世界里每一个事物…

python图像界面改左上角窗口的的icon图标

目录 问题描述 解决办法 展示成功 结语 问题描述 Traceback (most recent call last): File "d:\桌面\python项目\py_boomer-master\py_boomer-master\微信公众号.py", line 20, in <module> window.iconbitmap(D:/桌面/python项目/3.png) # Correc…

主流电商平台api接口实时数据返回

主流电商平台的API接口可以实时返回一些常用的数据&#xff0c;包括但不限于以下几种&#xff1a; 商品数据&#xff1a;可以获取平台上的商品信息&#xff0c;包括商品名称、价格、库存等。 订单数据&#xff1a;可以获取用户下单的订单信息&#xff0c;包括订单号、下单时间…

快速识别PLC通讯中的两种主要应用方式

在工业自动化领域&#xff0c;PLC扮演着至关重要的角色。然而&#xff0c;许多人在初次接触PLC通讯时&#xff0c;常因其复杂性而感到困扰。事实上&#xff0c;PLC的通讯并不如人们想象中的那么神秘&#xff0c;它主要只有两种类型&#xff1a;一种是需要编写代码的通讯方式&am…

python coding with ChatGPT 专题1 | 树的直径

文章目录 定义题目特点 树的表示字典存储邻接表TreeNode类 深度优先 &#xff08;两次DFS法&#xff09;动态规划 &#xff08;树形DP&#xff09;优势 相似题目参考资料 定义 树上任意两节点之间最长的简单路径即为树的「直径」。 题目 给定一棵树&#xff0c;求出这棵树的…

vue3+ts | axios 二次封装

安装 pnpm i axios axios 二次封装 // 实用性工具文件 放于 utils文件中 // 对axios函数库进行二次封装&#xff1f; // 二次封装的目的&#xff1f;利用axios请求、响应拦截器 import axios from axios// axios.create 创建一个axios实例&#xff1a;可以设置基础路径&a…

探索数据结构:链式队与循环队列的模拟、实现与应用

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;数据结构与算法 贝蒂的主页&#xff1a;Betty’s blog 1. 队列的定义 队列&#xff08;queue&#xff09;是一种只允许在一端进…

原来这就是线程安全(一)

TOC 一:什么是线程不安全?? 先看一段代码: public class Demo1 {public static int count 0;public static void main(String[] args) throws InterruptedException {Thread t1new Thread(()->{for (int i 0; i < 50000; i) {count;}});Thread t2new Thread(()-&g…

Linux-进程控制

&#x1f30e;进程控制【上】 文章目录&#xff1a; 进程控制 为什么要有地址空间和页表 程序的内存       程序申请内存使用问题 写时拷贝与缺页中断 父子进程代码共享       为什么需要写时拷贝       页表的权限位       缺页中断 退出码和错误码…

P3369 【模板】普通平衡树(splay 算法)

题目描述 您需要写一种数据结构&#xff08;可参考题目标题&#xff09;&#xff0c;来维护一些数&#xff0c;其中需要提供以下操作&#xff1a; 插入一个数 x。删除一个数 x&#xff08;若有多个相同的数&#xff0c;应只删除一个&#xff09;。定义排名为比当前数小的数的…

Pytorch从零开始实战22

Pytorch从零开始实战——CycleGAN实战 本系列来源于365天深度学习训练营 原作者K同学 内容介绍 CycleGAN是一种无监督图像到图像转换模型&#xff0c;它的一个重要应用领域是域迁移&#xff0c;比如可以把一张普通的风景照变化成梵高化作&#xff0c;或者将游戏画面变化成真…

2024软件设计师备考讲义——UML(统一建模语言)

UML的概念 用例图的概念 包含 <<include>>扩展<<exted>>泛化 用例图&#xff08;也可称用例建模&#xff09;描述的是外部执行者&#xff08;Actor&#xff09;所理解的系统功能。用例图用于需求分析阶段&#xff0c;它的建立是系统开发者和用户反复…

4G/5G防爆布控球

#防爆布控球 #远程实时监控 #移动应急指挥 #高清图像采集 #防爆安全认证 4G/5G防爆布控球 M130-EX防爆布控球是针对石化装置、石油平台、燃气、化工、制药、煤炭、冶炼、船舶制造、纺织等易燃易爆环境及危险场所而开发设计的防爆智能一体化电气设备。 产品型号&#xff1a;M13…

Antd Vue3 使用 Anchor 锚点组件记录

项目场景 客户要求做一个表单页面&#xff0c;表单数据分为三步&#xff0c;每一步骤是一个单独的 Vue 组件&#xff0c;表单上方需要使用锚点组件实现锚点定位到每一步的功能。 代码总览 <template><div class"guided-form-content-wrapper"><!-- …

CKS之Kubernetes审计日志

目录 概述 审计事件阶段 审计日志级别 None Metadata Request RequestResponse 审计日志的使用 步骤1&#xff1a;配置审计策略文件 步骤2&#xff1a;配置API Server 步骤3&#xff1a;配置日志存储 注意事项 审计策略与规则 审计日志样例 使用场景 概述 Kube…

一、JAVA集成海康SDK

JAVA集成海康SDK 文章目录 JAVA集成海康SDK前言一、项目依赖 jar1. examples.jar2. 项目依赖 jna.jar,可以通过 maven依赖到。二、集成SDK1.HcNetSdkUtil 海康 SDK封装类2.HCNetSDK3.Linux系统集成SDK三、总结前言 提示:首先去海康官网下载 https://open.hikvision.com/dow…

stable diffusion如何下载模型?

文件夹里面有14个模型&#xff0c;把这些模型复制到SD文件夹里 具体位置:SD文件>models>ControlNet

【C/C++】从零开始认识C++历程-启航篇

文章目录 &#x1f4dd;前言&#x1f320; 什么是C&#xff1f;&#x1f309;C的发展史 &#x1f320;C的重要性&#x1f309;语言的使用广泛度 &#x1f320;在工作领域&#x1f309; 岗位需求 &#x1f320;相关笔试题&#x1f309; 公司怎样面试C &#x1f6a9;总结 &#x…

蓝桥杯 - 小明的背包1(01背包)

解题思路&#xff1a; 本题属于01背包问题&#xff0c;使用动态规划 dp[ j ]表示容量为 j 的背包的最大价值 注意&#xff1a; 需要时刻提醒自己dp[ j ]代表的含义&#xff0c;不然容易晕头转向 注意越界问题&#xff0c;且 j 需要倒序遍历 如果正序遍历 dp[1] dp[1 - vo…
最新文章