JavaScript教程:从基础到发展历程及语法规则的全面介绍

news2024/12/22 20:26:14

文章目录

    • 一、JavaScript简介
    • 二、JavaScript发展历程
    • 三、JavaScript基础语法
      • 3.1、变量概念
      • 3.2、变量命名
      • 3.3、变量提升
      • 3.4、代码注释
      • 3.5、语句
      • 3.6、区块
    • 四、总结


在这里插入图片描述

一、JavaScript简介

JavaScript 是一种高级的、解释型的编程语言,主要用于为网页添加交互性和动态效果。它由Netscape 公司于1995年开发,并在1996年被提交给ECMA(欧洲计算机制造商协会),成为ECMAScript标准。JavaScript的主要特点包括:

解释型语言:JavaScript是一种解释型语言,不需要编译,代码在运行时由JavaScript解释器逐行解释执行。
基于对象:JavaScript是一种基于对象的语言,支持面向对象编程,可以创建和操作对象。
事件驱动:JavaScript通过事件来响应用户的操作,如鼠标点击、键盘按键等。
跨平台:JavaScript可以在多种平台上运行,包括各种浏览器和服务器环境。
动态性:JavaScript可以在运行时修改网页的内容和行为,实现动态交互效果。

JavaScript被广泛应用于网页开发中,用于实现各种交互效果、表单验证、动画效果等。它也可以用于服务器端编程,如Node.js。随着技术的发展,JavaScript的应用领域不断扩大,已成为现代Web开发中不可或缺的一部分。

虽然JavaScript 和ECMAScript 基本上是同义词,但JavaScript远远不限于ECMA-262 所定义的那样。完整的JavaScript 实现包含以下几个部分:

  • 核心(ECMAScript)
  • 文档对象模型(DOM)
  • 浏览器对象模型(BOM)

img

ECMAScript,即ECMA-262定义的语言,并不局限于Web浏览器。事实上,这门语言没有输入和输出之类的方法。ECMA-262将这门语言作为一个基准来定义,以便在它之上再构建更稳健的脚本语言。Web 浏览器只是ECMAScript 实现可能存在的一种宿主环境(host environment)。宿主环境提供ECMAScript 的基准实现和与环境自身交互必需的扩展。扩展(比如DOM)使用ECMAScript 核心类型和语法,提供特定于环境的额外功能。其他宿主环境还有服务器端JavaScript 平台Node.js 和即已被淘汰的Adobe Flash

如果不涉及浏览器的话,ECMA-262定义以下内容:

  • 语法
  • 类型
  • 语句
  • 关键字
  • 保留字
  • 操作符
  • 全局对象

ECMAScript 只是对实现这个规范描述的所有方面的一门语言的称呼。JavaScript 实现了ECMAScript,而Adobe ActionScript 同样也实现了ECMAScript。

二、JavaScript发展历程

JavaScript的发展历程可以追溯到1992年,当时一家名为Nombas的公司开发了一种名为C–的客户端脚本语言,专门用于表单验证。后来,C–被更名为ScriptEase。

1995年,Netscape(网景)公司开发了一门名为LiveScript的客户端脚本语言。为了借助Java语言的声势,Netscape与Sun公司合作,将LiveScript进行了修改并命名为JavaScript。JavaScript的语法和对象体系在一定程度上借鉴了Java,但JavaScript不需要编译,由解释器直接执行。

1996年,微软发布了自己的JavaScript实现,名为JScript。同年,Netscape将JavaScript提交给ECMA(欧洲计算机制造商协会),希望将其标准化。最终,ECMA发布了ECMAScript标准,成为客户端脚本语言的规范。

随着互联网的发展,JavaScript的应用越来越广泛。它不仅用于增强网页的交互性和动态效果,还被用于服务器端编程(如Node.js)、移动应用开发(如React Native)等领域。

2009年,ECMAScript 5(ES5)发布,引入了一些新特性和语法糖,使得JavaScript更加现代化。

2015年,ECMAScript 6(ES6)发布,引入了模块、箭头函数、Promise等重要特性,使得JavaScript的语法更加简洁,功能更加强大。

如今,JavaScript已经成为了世界上最流行的编程语言之一,被广泛应用于各种类型的软件开发中。随着技术的不断演进,JavaScript也在持续发展和完善,以满足开发者和用户的需求。
在这里插入图片描述

三、JavaScript基础语法

JavaScript语法很大程度上借鉴了C语言和其他类C语言,如Java

3.1、变量概念

变量是编程中最基本的存储单位,它会暂时存储用户放进去的数据,而存储的数据位于内存空间中,通过正确调用内存空间中变量名字即可以取出与之对应的数据。JavaScript 变量是松散类型的,即变量可以用于保存任何类型的数据。每个变量只不过是一个用于保存任意值的命名占位符。有3个关键字可以声明变量:

  • var:在ECMAScript的所有版本中都可以使用
  • const:只能在ECMAScript 6 及更晚的版本中使用
  • let:只能在ECMAScript 6 及更晚的版本中使用

声明变量示例如下所示:

var age=28;

var name;
name="Surpass";

var name="Surpass";
name=100; // 合法,但不推荐

3.2、变量命名

在JavaScript中变量名是区分大小写的,的语言。无论是变量、函数名还是操作符,都区分大小写。

- 1.变量test和变量Test是两个不同的变量
- 2.typeof不能作为函数名,因为它是一个关键字

按照惯例,JavaScript标识符使用驼峰大小写形式,即第一个单词的首字母小写,后面每个单词的首字母大写,示例如下所示:

- firstName
- myFunction
- doSomething

虽然这种写法并不是强制性,但因为这种形式跟JavaScript内置函数和对象的命名方式一致,所以算是最佳实践

变量名中第一个字符,可以是任意Unicode字母(包括英文字母和其他语言的字母)以及美元符号($)和下划线(_)

以下为合法的变量命名

- para0
- _temp
- $variable

以下为非法的变量命名

1ab //第一个字符不能是数字
23  //第一个字符不能是数字
*** //变量名不能包含星号
a+b //变量名不能包含加号
-d  //变量名中不能包含减号或连划线

第二个字符及后面的字符,除了Unicode字母,美元符号和下划线之外,还可以允许是数字(0~9)

变量名不允许使用保留字或关键字

常见的保留字符如下所示:

break       do              in              typeof
case        else            instanceof      var
catch       export          new             void
class       extends         return          while
const       finally         super           with
continue    for             switch          yield
debugger    function        this
default     if              throw
delete      import          try

3.3、变量提升

JavaScript引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行的执行。这样就会造成,所有的变量声明语句,都会被提升到代码头部,这种方式称之为变量提升

function test() {
    console.log(name);
    var name = "Surpassme";
}
test(); // undefined

以上代码不会报错,是因为ECMAScript运行时会将其等价于以下代码:

function test() {
    var name ;
    console.log(name);
    name="Surpassme"
}
test(); // undefined

3.4、代码注释

源码中JavaScript无须解释的部分称之为注释。其作用是对代码进行注释,便于理解代码和后期维护。在JavaScript中提供了两种注释写法。

  • 单行注释,用//标记
// 这是单行注释
  • 多行注释,用/* */
/*
这是
多行
注释
*/

3.5、语句

JavaScript的执行是以行为单位,即一行一行的执行,一般情况下,每一行就是一个语句。

var a=1;

语句以分号结尾,一个分号表示一个语句的结束,多个语句可以写在一行中。如下所示:

var a=1;var b=a+1;

3.6、区块

JavaScript 使用在括号({}),将多个相关的语句组合在一起,称之为区块(block),对于var 来说,JavaScript的区块不构成单独的作用域

{
    var a=1;
}
console.log(a/2);

上面代码在区块内部,使用var命令声明变量a并进行赋值,在区块外部,变量a依然有效,区块对于var命令不构成单独的作用域,与不使用区块的情况没有任何区别。在JavaScript中,单独使用区块并不常见,区块常常用来构成其他更复杂的语法结构,如for、if、while、function等。

四、总结

如今,JavaScript已经成为了世界上最流行的编程语言之一,被广泛应用于各种类型的软件开发中。随着技术的不断演进,JavaScript也在持续发展和完善,以满足开发者和用户的需求。

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

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

相关文章

网络安全(防火墙,IDS,IPS概述)

问题一:什么是防火墙,IDS,IPS? 防火墙是对IP:port的访问进行限制,对访问端口进行制定的策略去允许开放的访问,将不放开的端口进行拒绝访问,从而达到充当防DDOS的设备。主要是拒绝网络流量,阻断所有不希望出现的流程,禁止数据流量流通,达到安全防护的作用。如将一些恶…

谷歌浏览器快捷键, VScode 快捷键

谷歌浏览器快捷键 谷歌浏览器跳转标签页的方式: control Tab 跳转下一个标签页 control shift tab 上一个标签页 command 1-8 跳转对应的标签页,而command 9 则是跳转最后一个标签页 Previous Tab 插件实现谷歌浏览器两个tab页来回切换。快捷键为…

JVM-结合MAT工具分析OOM问题

JVM-结合MAT工具分析OOM问题 启动项目前配置VM参数 -XX:UseParNewGC -XX:UseConcMarkSweepGC -Xms1m #初始化大小 -Xmx1m #最大值 -XX:PrintGCDetails -Xloggc:gc_dandan.log -XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath./运行结果截图 使用MAT打开java_pid12164.hprof…

实时时钟模块RX8901CE具有数字温度补偿功能,助力工业设备实现精准控制

在工业控制领域,电子产品的工作温度范围较广,同样的产品将面对高温、低温等不同工况。对于时钟信号敏感的电路设计而言,温度变化将严重影响产品功能,因此需要高精度时钟来保证电路信号的稳定,这种情况下需要使用带数字…

Django实现的登录注册功能

1 前言 在Web开发中,用户登录和注册是最基本且必不可少的功能。Django,作为一个高级的Python Web框架,为我们提供了强大的工具和库来快速实现这些功能。下面,我将详细介绍如何使用Django来实现用户登录和注册功能。 2 功能介绍 …

使用Ollama在本地运行AI大模型gemma

1.下载: https://github.com/ollama/ollama/releases 2.配置环境变量 我的电脑-右键-属性-系统-高级系统设置-环境变量-【系统环境变量】新建 变量名:OLLAMA_MODELS (固定变量名) 变量值:E:\Ollama\Lib &#xff0…

【状态机dp】【 排序 】 2809使数组和小于等于 x 的最少时间

本文涉及知识点 【状态机dp】 排序 LeetCode 2809. 使数组和小于等于 x 的最少时间 给你两个长度相等下标从 0 开始的整数数组 nums1 和 nums2 。每一秒&#xff0c;对于所有下标 0 < i < nums1.length &#xff0c;nums1[i] 的值都增加 nums2[i] 。操作 完成后 &…

Vue.js高效前端开发(页面验证跳转,查)

效果图 代码&#xff1a; new.html <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><div id"app"><input type"text" name"" id"&…

SecureCRT通过私钥连接跳板机,再连接到目标服务器(图文教程)

文章目录 1. 配置第一个session&#xff08;跳板机&#xff09;2. 设置本地端口3. 设置全局firewall4. 配置第二个session&#xff08;目标服务器&#xff09; 服务器那边给了一个私钥&#xff0c;现在需要通过私钥连接跳板机&#xff0c;再连接到目标服务器上 &#x1f349; …

Softing WireXpert 4500线缆认证仪的独特之处——双控系统

Softing推出的WireXpert 4500线缆认证仪&#xff0c;可用于结构化布线认证&#xff0c;认证速率高达40Gb/s。该线缆认证仪专为实用性而设计&#xff0c;重量轻&#xff0c;手感舒适&#xff0c;主机与副机均配备6英寸工业LCD触摸屏&#xff0c;使其更适用于布线现场。 WireXper…

4.9总结

多线程 程序内部的执行路径就叫线程&#xff0c;为了满足需求同时执行多个任务&#xff0c;就有了多线程 多线程有两种应用方式&#xff1a; 第一种是并发&#xff1a;在同一时刻&#xff0c;有多个指令在单个CPU上交替运行 第二种是并行&#xff1a;在同一时刻&#xff0c…

网络网络层之(7)PPPOE协议

网络网络层之(7)PPPOE协议 Author: Once Day Date: 2024年4月7日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文档可参考专栏&#xff1a;通信网络技术_Once-Day…

搜维尔科技:Patchwork 3D工业仿真实时渲染,将CAD 数据转换成真实感的3D模型以用于工业用途

Patchwork 3D工业仿真 实时渲染点击跳转官网 从实时渲染到真实照片 根据工作阶段所需的逼真度&#xff0c;您可以使用三个渲染引擎&#xff0c;从最快的&#xff08;OpenGL&#xff0c;交互式&#xff09;到最逼真的&#xff08;光线跟踪&#xff0c;Iray物理逼真&#xff09;…

数据仓库的概念和作用?如何搭建数据仓库?

随着企业规模的扩大和数据量的爆炸性增长&#xff0c;有效管理和分析海量数据成为企业数字化转型的关键。而在互联网的普及过程中&#xff0c;信息技术已深入渗透各行业&#xff0c;逐渐融入企业的日常运营。然而&#xff0c;企业在信息化建设中面临了一系列困境和挑战&#xf…

皮灵顿靶机1

1 先在kali上扫描靶机ip地址 .1、.2、.254、.138都是kali自身的一些ip地址&#xff0c;所以在此确认要进行攻击的靶机的ip地址为&#xff1a;192.168.84.132 再查看端口&#xff0c;一个22端口一个80端口 我这里使用dirb&#xff0c;查看网站的信息 最特别的是robots.txt …

python如何去掉换行符

使用strip()函数去掉每行结束的\n。 strip()函数 声明&#xff1a;str为字符串&#xff0c;chars为要删除的字符序列。 str.strip(chars&#xff09;&#xff1a;删除s字符串中开头、结尾处&#xff0c;位于chars删除序列的字符。 str.lstrip(chars)&#xff1a;删除s字符串…

vue中使用axios获取不到响应头Content-Disposition的解决办法

项目中&#xff0c;后端返回的文件流; 前端需要拿到响应头里的Content-Disposition字段的值&#xff0c;从中获取文件名 在控制台Headers中可以看到相关的字段和文件名&#xff0c;但是在axios里面却获取不到 如果想要让客户端访问到相关信息&#xff0c;服务器不仅要在head…

maxpool long数据类型报错

报错&#xff1a; RuntimeError: “max_pool2d” not implemented for ‘Long’ 源码&#xff1a; import torch from torch import nn from torch.nn import MaxPool2dinput torch.tensor([[1, 2, 0, 3, 1],[0, 1, 2, 3, 1],[1, 2, 1, 0, 0],[5, 2, 3, 1, 1],[2, 1, 0, 1, 1…

python爬虫-----爬虫解析—xpath(第十八天)

&#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; &#x1f388;&#x1f388;所属专栏&#xff1a;python爬虫学习&#x1f388;&#x1f388; ✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天…

JVM—垃圾收集器

JVM—垃圾收集器 什么是垃圾 没有被引用的对象就是垃圾。 怎么找到垃圾 引用计数法 当对象引用消失&#xff0c;对象就称为垃圾。 对象消失一个引用&#xff0c;计数减去一&#xff0c;当引用都消失了&#xff0c;计数就会变为0.此时这个对象就会变成垃圾。 在堆内存中主…