JavaScript快速入门-02-基本语法

2 基本语法

2.1 JavaScript简介

JavaScript 是一门 解释型语言,其代码在客户端中执行前不需经过编译,而是直接由浏览器解释执行。主要用作 客户端脚本语言,在 浏览器中执行。但随着Node.js的问世,JavaScript 也逐渐开始被用来编写服务器端程序。

JavaScript 不是 Java,其发展历程如下所示:

  • 1995 年,JavaScript 由网景(Netscape)公司开发。
  • 1996 年,网景正式向 ECMA(欧洲计算机制造商协会)组织提交语言标准。
  • 1997 年,ECMA 以 JavaScript 语言为基础制定了 ECMAScript 标准规范。
  • 2015 年, ECMAScript 2015(ES2015)即第 6 版问世,最早被称作是 ECMAScript 6(ES6),添加了不少新的语言特性。

1997 年,JavaScript 1.1 作为提案被提交给欧洲计算机制造商协会(Ecma)。第39 技术委员会(TC39)承担了”标准化一门通用、跨平台、厂商中立的脚本语言的语法和语义”的任务(参见TC39-ECMAScript)。TC39 委员会由来自网景、Sun、微软、Borland、Nombas 和其他对这门脚本语言有兴趣的公司的工程师组成。他们花了数月时间打造出ECMA-262,也就是ECMAScript(发音为”ek-ma-script”)这个新的脚本语言标准。
1998 年,国际标准化组织(ISO)和国际电工委员会(IEC)也将ECMAScript采纳为标准(ISO/IEC-16262)。自此以后,各家浏览器均以ECMAScript作为自己JavaScript实现的依据,虽然具体实现各有不同。

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

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

JavaScript快速入门-02-基本语法

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。

2.2 JavaScript语法

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

2.2.1 变量概念

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

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

声明变量示例如下所示:

var age=28;

var name;
name="Surpass";

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

2.2.2 变量命名

  • 1、在JavaScript中变量名是 区分大小写的,的语言。无论是变量、函数名还是操作符,都区分大小写。
- 1.变量test和变量Test是两个不同的变量
- 2.typeof不能作为函数名,因为它是一个关键字

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

- firstName
- myFunction
- doSomething

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

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

以下为合法的变量命名

- para0
- _temp
- $variable

以下为非法的变量命名

1ab //第一个字符不能是数字
23  //第一个字符不能是数字
*** //变量名不能包含星号
a+b //变量名不能包含加号
-d  //变量名中不能包含减号或连划线
  • 3、第二个字符及后面的字符,除了Unicode字母,美元符号和下划线之外,还可以允许是数字(0~9)
  • 4、变量名不允许使用保留字或关键字

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

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

2.2.3 变量提升

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

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

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

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

2.2.4 代码注释

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

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

  • 多行注释,用/ /
/*
这是
多行
注释
*/

2.2.5 语句

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

var a=1;

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

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

2.2.6 区块

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

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

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

原文地址:https://www.jianshu.com/p/b89060a2f92c

本文同步在微信订阅号上发布,如各位小伙伴们喜欢我的文章,也可以关注我的微信订阅号:woaitest,或扫描下面的二维码添加关注:

JavaScript快速入门-02-基本语法

Original: https://www.cnblogs.com/surpassme/p/16593272.html
Author: Surpassme
Title: JavaScript快速入门-02-基本语法

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/581653/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • python写一个双色球彩票计算器

    首先声明,赌博一定不是什么好事,也完全没有意义,不要指望用彩票发财。之所以写这个,其实是用来练手的,可以参考这个来预测一些其他的东西,意在抛砖引玉。 啰嗦完了,马上开始,先上伪代码…

    Linux 2023年6月6日
    0108
  • 个人学习-STL:Set前置-tree

    参考资料: [1]程杰.大话数据结构[M]. [2][美]Robert Sedgewic,Jevin Wayne. 算法Algorithms[M].谢路云译 1.基本脉络: 树实际…

    Linux 2023年6月6日
    0105
  • SQL实战——03. 查找各个部门当前(to_date=’9999-01-01′)领导当前薪水详情以及其对应部门编号dept_no

    查找各个部门当前(to_date=’9999-01-01′)领导当前薪水详情以及其对应部门编号dept_noCREATE TABLE dept_manage…

    Linux 2023年6月14日
    0108
  • [转帖]shell 学习之for语句

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年5月28日
    098
  • pyQt中的信号

    1. 说明 在调用 exec_()方法时,应用会进入主循环,而主循环会监听、处理事件 import sys from PyQt5.QtCore import Qt from PyQ…

    Linux 2023年6月7日
    093
  • MySQL的数据类型

    MySQL的数值类型 类型大小范围(有符号)范围(无符号)用途TINYINT 1 Bytes (-128,127)(0,255)小整数值SMALLINT 2 Bytes (-32 …

    Linux 2023年6月7日
    095
  • 010 Linux 文本统计与去重 (wc 和 uniq)

    wc 命令一般是作为组合命令的一员与其他命令一同起到统计的作用。而一般情况下使用wc -l 命令较多。uniq 可检查文本文件中重复出现的行,一般与 sort 命令结合使用。一起组…

    Linux 2023年5月27日
    091
  • 我的2021年总结

    前言 这一年把整个重心都放到考研上,对工作并没有那么上心,但也做个年终总结吧。相应的立一个flag,明年来看看工作上的flag完成了没有?2022年在技术上要成长啊。 22岁很迷茫…

    Linux 2023年6月8日
    0115
  • 001.IT运维面试问题-Linux基础

    Redhat、CentOS、Fedora、SuSE、Debian、Ubuntu、FreeBSD等。 ⑴开机BIOS自检,加载硬盘。 ⑵读取MBR,MBR引导。 ⑶grub引导菜单(…

    Linux 2023年6月13日
    0105
  • cpu idle 状态查看【原创】

    查看cpu idle的类型 cat /sys/devices/system/cpu/cpu0/cpuidle/state0/desc ARM WFI 查看cpu idle进入的次数…

    Linux 2023年6月8日
    0114
  • Python闭包

    前言 学习Python的单例实现的时候,遇到了下面这样的代码。很不理解为什么局部变量 _instance没有重新初始化。后来看到有人说这是闭包,于是又去了解了下 闭包。没想到闭包竟…

    Linux 2023年6月7日
    098
  • 线程

    一、线程概念的引入 进程 之前我们已经了解了操作系统中进程的概念,程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程。程序和进程的区…

    Linux 2023年6月14日
    097
  • ​Linux知识点总结(内附思维导图,建议收藏)

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月7日
    0109
  • Linux 常用目录管理命令

    cp:复制文件或目录,直接复制,如,cp /root/install.sh /home cp -a:相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用),如 cp -a…

    Linux 2023年6月14日
    0114
  • ThinkPHP5 远程命令执行漏洞

    一、ThinkPHP介绍 轻量级框架,内部OOP和面向过程代码都存在,是国人自己开发的框架。ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,…

    Linux 2023年6月14日
    080
  • 不割韭菜,纯分享:剖析HTML中的类,运维开发必备前端技能,我们一起坚持。

    写在开篇 开篇之前,先提个问题,什么是类?分类吗?可以这么说吧!我们可以给物体分类,也可以给人分类。正所谓,物以类聚,人以群分。难道我们这里是给元素分类?用分类来理解是不准确的啦!…

    Linux 2023年6月7日
    0109
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球