邂逅JavaScript

写在前面


大家好,我是一溪风月🤖,一名前端工程师,在前端开发的领域中,JavaScript无疑占据着举足轻重的地位。它与HTML、CSS共同构成了前端开发的三大核心技术,是赋予网页交互性与动态功能的关键所在。今天,就让我们一起深入探索JavaScript这门神奇的编程语言。

一.编程语言的前世今生


在了解JavaScript之前,先来回顾一下编程语言的发展历程。编程语言的演进大致经历了机器语言、汇编语言和高级语言三个阶段。

(一)机器语言:计算机的"母语"

计算机的存储单元只有0和1两种状态,机器语言便是由这些0和1组成的二进制编码,也就是机器码。一定长度的机器码组成机器指令,用其编写的程序就是机器语言。

arduino 复制代码
// 示例机器码
1000110001001111 0000000000000000
10001100010100000000000000000100

机器语言的优点是能被计算机直接识别,无需编译解析,直接对硬件产生作用,执行效率极高。然而,它的缺点也很明显,程序全是0和1的指令代码,可读性差,容易出错,编写难度极大,如今已很少有人直接使用它进行开发。

(二)汇编语言:符号化的机器语言

为解决机器语言的缺陷,汇编语言应运而生。它用符号(如mov、push指令)代替冗长难记的0、1代码。

perl 复制代码
; 示例汇编代码
push %ebp
mov %esp, %ebp
sub $0x10, %esp
mov 0xc(%ebp), %eax
mov 0x8(%ebp), %edx

汇编语言可直接访问和控制计算机硬件设备,占用内存少,执行速度快。但不同机器的汇编语言语法和编译器不同,代码缺乏可移植性,符号繁多难记,编写和调试都比较困难,主要应用于操作系统内核、驱动程序、单片机程序等场景。

(三)高级语言:更贴近人类思维

高级语言接近自然语言,更符合人类的思维方式,语法和结构类似于普通英文。

js 复制代码
// 示例高级语言代码(JavaScript)
const message = "Hello-World";
console.log(message);

高级语言简单易用、易于理解,远离对硬件的直接操作,普通人学习后即可编程,且程序具有可移植性。不过,它不能直接被计算机识别,需要经编译器翻译成二进制指令后才能运行。常见的高级语言有JavaScript、C语言、C++、C#、Java、Objective-C、Python等。在前端开发中,我们重点要学习的高级语言就是JavaScript。

二.JavaScript的诞生与发展


(一)起源:网景公司的需求

1994年,网景公司发布了Navigator浏览器0.9版,这是第一个比较成熟的网络浏览器,但该版本只能浏览,不具备与访问者互动的能力。网景公司急需一种网页脚本语言,使浏览器能与网页互动。

(二)诞生:天才的10天创作

1995年,网景公司招募了程序员Brendan Eich。最初,公司希望将Scheme语言作为网页脚本语言,后来又倾向于简化Java来适应网页脚本需求。但Brendan Eich热衷于Scheme,他用10天时间设计出了最初名为Mocha的语言,在Navigator2.0 beta版本更名为LiveScript,最终在Navigator2.0 beta 3版本正式定名为JavaScript,借助Java的热度进行推广。JavaScript借鉴了多种语言的特性,如C语言的基本语法、Java语言的数据类型和内存管理、Scheme语言将函数提升到"第一等公民"的地位、Self语言基于原型的继承机制 。

(三)标准化:ECMAScript规范的诞生

1995年,微软推出Internet Explorer,引发了与Netscape的浏览器大战。微软创建了JScript与网景竞争,给开发者带来适配难题。1996年11月,网景向ECMA(欧洲计算机制造商协会)提交语言标准。1997年6月,ECMA以JavaScript语言为基础制定了ECMAScript标准规范ECMA - 262。ECMAScript是一种规范,JavaScript是其最著名的实现之一,此外,ActionScript和JScript也都是该规范的实现语言。

三.JavaScript的组成


JavaScript由ECMAScript、DOM(文档对象模型)和BOM(浏览器对象模型)组成。

(一)ECMAScript:语言核心规范

ECMAScript是JavaScript的标准,描述了该语言的语法和基本对象。从1997年的ECMAScript 1到2015年的ECMAScript 6(ES6),不断进行更新和完善,增加了如严格模式("strict mode")、正则表达式、try/catch、JSON支持、字符串和数组的新方法等特性。我们通常会重点学习ECMAScript,尤其是ES5之前的语法。

(二)DOM:操作文档的API

DOM提供了操作文档(如HTML页面)的接口。通过DOM,我们可以动态地创建、修改和删除HTML元素,访问和修改元素的属性、样式,以及处理元素的事件等。例如,获取页面上的一个按钮元素并为其添加点击事件:

js 复制代码
// 获取按钮元素
const button = document.getElementById('myButton');
// 添加点击事件
button.addEventListener('click', function() {
    console.log('按钮被点击了!');
});

(三)BOM:操作浏览器的API

BOM用于操作浏览器窗口,提供了访问浏览器属性和行为的方法。比如,获取浏览器的窗口尺寸、控制浏览器的导航、操作浏览器的历史记录等。下面是一个获取浏览器窗口宽度的示例:

js 复制代码
const windowWidth = window.innerWidth;
console.log(`当前浏览器窗口宽度为:${windowWidth}px`);

四.JavaScript的运行机制


(一)浏览器内核与JavaScript引擎

不同的浏览器有不同的内核,常见的浏览器内核有Gecko(早期用于Netscape和Mozilla Firefox)、Trident(微软开发,用于IE4 - IE11,Edge已转向Blink)、Webkit(苹果基于KHTML开发,用于Safari,Google Chrome之前也使用)、Blink(Webkit分支,用于Google Chrome、Edge、Opera等) 。

JavaScript代码由JavaScript引擎执行。因为高级编程语言需要转成机器指令才能被CPU执行,而CPU只认识机器语言,所以需要JavaScript引擎将JavaScript代码翻译成CPU指令。常见的JavaScript引擎有SpiderMonkey(第一款JavaScript引擎,由Brendan Eich开发)、Chakra(微软开发,用于IE浏览器)、JavaScriptCore(WebKit中的JavaScript引擎,由Apple公司开发)、V8(Google开发,助力Chrome脱颖而出)等。

以WebKit为例,它由WebCore和JavaScriptCore两部分组成。WebCore负责HTML解析、布局、渲染等工作,JavaScriptCore则负责解析和执行JavaScript代码。在小程序中,JavaScript代码也是由JSCore(JavaScriptCore的简称)执行的。

五.JavaScript的应用场景


JavaScript的应用场景非常广泛,涵盖了多个领域。

(一)Web开发

这是JavaScript最主要的应用场景。无论是原生JavaScript开发,还是基于React、Vue、Angular等框架进行开发,JavaScript都能为网页带来丰富的交互体验,如表单验证、菜单切换、页面动态加载等。

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF - 8">
    <title>JavaScript示例</title>
</head>
<body>
    <button id="myButton">点击我</button>
    <script>
        const button = document.getElementById('myButton');
        button.addEventListener('click', function() {
            alert('欢迎来到JavaScript的世界!');
        });
    </script>
</body>
</html>

(二)移动端开发

通过ReactNative、Weex等框架,JavaScript可以用于开发原生移动应用。这些框架允许开发者使用JavaScript编写代码,然后将其转换为原生应用程序,实现跨平台开发,提高开发效率。

(三)小程序端开发

在小程序开发中,JavaScript同样不可或缺。微信小程序、uniapp、taro等小程序开发框架都依赖JavaScript进行逻辑层的开发,实现页面跳转、数据请求、用户交互等功能。

(四)桌面开发

借助Electron框架,JavaScript可以用于开发桌面应用程序。著名的VSCode编辑器就是基于Electron开发的,它让开发者可以使用熟悉的Web技术(HTML、CSS、JavaScript)来构建桌面应用。

(五)后端开发

Node.js的出现让JavaScript可以用于后端开发。通过Express、Koa、Egg.js等Node框架,开发者可以使用JavaScript构建高性能的服务器端应用,处理网络请求、数据库操作等任务。

js 复制代码
const express = require('express');
const app = express();
const port = 3000;
​
app.get('/', (req, res) => {
    res.send('Hello, World!');
});
​
app.listen(port, () => {
    console.log(`Server running on port ${port}`);
});

六.结语


JavaScript从诞生之初到如今成为应用广泛的编程语言,经历了许多变革和发展。它在前端开发中扮演着灵魂角色,同时在移动端、小程序端、桌面端和后端开发等领域也展现出强大的实力。掌握JavaScript,不仅能为我们打开前端开发的大门,还能让我们在多个技术领域自由探索。希望大家通过这篇文章,对JavaScript有更深入的了解,开启自己的JavaScript编程之旅。

相关推荐
没有故事、有酒10 分钟前
Ajax介绍
前端·ajax·okhttp
朝新_14 分钟前
【SpringMVC】详解用户登录前后端交互流程:AJAX 异步通信与 Session 机制实战
前端·笔记·spring·ajax·交互·javaee
裴嘉靖16 分钟前
Vue 生成 PDF 完整教程
前端·vue.js·pdf
毕设小屋vx ylw28242618 分钟前
Java开发、Java Web应用、前端技术及Vue项目
java·前端·vue.js
冴羽1 小时前
今日苹果 App Store 前端源码泄露,赶紧 fork 一份看看
前端·javascript·typescript
蒜香拿铁1 小时前
Angular【router路由】
前端·javascript·angular.js
brzhang2 小时前
读懂 MiniMax Agent 的设计逻辑,然后我复刻了一个MiniMax Agent
前端·后端·架构
西洼工作室2 小时前
高效管理搜索历史:Vue持久化实践
前端·javascript·vue.js
广州华水科技2 小时前
北斗形变监测传感器在水库安全中的应用及技术优势分析
前端
开发者如是说2 小时前
Compose 开发桌面程序的一些问题
前端·架构