4.1 JavaScript基础(保留字、常量、变量、表达式、语句)


4.1.1 JavaScript简介

JavaScript一种解释性脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML网页上使用,用来给HTML网页增加动态(行为、动作)功能。 1995年由Netscape公司的Brendan Eich在网景导航者浏览器(Netscape Navigator)上首次设计并实现。

JavaScript之名 Netscape在最初将其脚本语言命名为LiveScript,后来与Sun合作之后将其改名为JavaScript(一是技术角度:JavaScript最初受Java启发而开始设计的,语法上有类似之处,一些名称和命名规范也借自Java;二是营销角度:为了市场营销便利借助了Sun的Java语言名字),但实际上她与Java是无论在概念还是设计上两种完全不同的语言。

ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会,European Computer Manufacturers Association)通过ECMA-262标准化的脚本程序设计语言。TC39(Technical Committee 39, ECMA的第39号技术专家委员会)负责制订ECMAScript标准。

https://www.w3.org/html/ig/zh/wiki/ES5

【例1】直接|导入运行的JavaScript脚本 (4.1/runScript.html)

4.1.2 JavaScript保留字与标识符

保留字(Reserved Word)= 关键字(Keyword)|未来保留字(Future Reserved Word)|空置字面值(Null Literal)|布尔字面值(Boolean Literal)

标识符就是给变量、函数和对象等指定的名字。JavaScript语言中标识符的命名规则如下:

注意:javascript使用unicode字符集, 只支持16位(2个字节)的utf-16编码(限于ECMAScript 5.1及其以下)。JavaScript字母包含中日韩等亚洲文字,javascript标识符可以使用中文。

4.1.3 变量

1. 变量定义

【例2】定义变量(隐式a=...;显式var a;) varDefinition();alert(s);

2. 变量作用域

【例3】变量范围:全局|局部|没有块范围 (4.1/varScope.html)

3. 变量类型转换

表1 类型自动类型转换
源类型 目标类型
数值类型 字符串类型 布尔类型 对象
数值类型 不变 数值字符串 true Number对象
Infinity 不变 "Infinity" true Number对象
-Infinity 不变 "-Infinity" true Number对象
0 不变 "0" false Number对象
NaN 不变 "NaN" false Number对象
字符串类型 数值或NaN 不变 true String对象
空字符串 0 不变 false String对象
true 1 "true" 不变 Boolean对象
false 0 "false" 不变 Boolean对象
null 0 "null" false Error
undefined NaN "undefined" false Error
对象 valueOf()或NaN toString() true 不变

【例4】类型转换:自动|强制 (4.1/typeConvert.html)

 (3) 自动类型转换
 (4) 强制类型转换 parseFloat(a)
 (9) conversion_test

4.1.4 基本数据类型字

JavaScript是弱类型脚本语言,声明变量时无须指定变量的数据类型。但JavaScript的值运行时保存在内存 中时,也是有数据类型的。JavaScript的基本数据类型有如下5种类型:

1. 数值类型

数值类型包含整数或浮点数,通常需要掌握以下4点知识点,特别要了解Number类的5个常量。

【例5】数值类型(科学计数法e|E、八进制0、十六进制0x、浮点型数精度丢失) numberType();

表2 Number类的常量与特殊值的对应
Number类的常量 特殊值
Number.MAX_VALUE 最大数值(最大正数) 1.7976931348623157e308
Number.MIN_VALUE 绝对值最小的正数 5e-324
Number.POSITIVE_INFINITY 正无穷大Infinity
Number.POSITIVE_INFINITY 负无穷大-Infinity
Number.NaN 非数 NaN: Not a Number

【例6】认识特殊值(Number.MAX_VALUE|MIN_VALUE,Infinity|-Infinity、NaN) specialNumber();

2. 字符串类型

JavaScript的字符串必须用引号括起来,此处的引号既可以是单引号,也可以是双引号。 javascript使用unicode字符集, 只支持16位(2个字节)的utf-16编码,不支持32位(限于ECMAScript 5.1及其以下)。 JavaScript区分大小写,转义字符依然是“\”。

延伸阅读《Unicode与JavaScript详解》阮一峰 http://www.ruanyifeng.com/blog/2014/12/unicode.html
表3 JavaScript常用转义字符
转义字符 说明 转义字符 说明 转义字符 说明
\n 换行回车 \t 制表符 \\ 反斜线
\r 回车 \" 双引号 \xHH 拉丁字母(HH表示2位16进制数)
\b 退格 \' 单引号 \uHHHH Unicode字符(HHHH表示4位16进制数)

【例7】认识字符串(长度length,编码16位utf-16编码,转义字符) f_string();

3. 布尔类型

布尔类型的值只有两个:true和false。布尔类型的值通常是比较运算、逻辑运算的结果或对象的某种开关状态,通常用于if、while的判断。

4. 未定义类型和空类型

未定义类型只有undefined一个值,某个变量未定义或者没有赋值,某对象的属性未定义。空类型只有null一个值,用于表明某个变量的值为无或不确定。

【例8】认识undefined和null null_undefined();

4.1.5 运算符与表达式

1. 赋值运算和算术运算

赋值运算符: 变量名 = 表达式; 算术运算符有加(+)、减(-)、乘(*)、除(/)、取余(%)、自加(++)、自减(--)、乘方(**)等;双目运算:+_*/%和**、单目运算:++和--。

【例9】赋值运算和算术运算(同时多个变量赋1个相同值、浮点数的求余不精确、i++、++i) arith();

3. 比较运算

比较运算: 相等与不等、数值大小、字符串排列前(小)后(大); 比较运算符有等于(==)、精确等于(===)、不等于(!=)、大于(>)、大于等于(>=)、小于(<)、小于等于(<=)七种,均属于双目运算,比较运算的结果是true或false。

【例10】比较运算(相等与不等、数值大小、字符串排列前后) compare();

4. 逻辑运算

逻辑运算符用于操作布尔型表达式(布尔型变量或常量、比较表达式),&&(and、与、而且)和||(or、或、或者)是双目运算,!(not、非)是单目运算,逻辑运算的结果是布尔值true或false。

【例11】逻辑运算(与或非(&&,||,!)、短路) logic();

5. 其他运算符

其他运算我们这里是指三目判断运算(?:)、二目判断变量是否类实例运算(instanceof)、单目判断变量数据类型运算(typeof)、单目返回undefined值运算(void)。void通常用在a标签的href属性赋"javascript:void(0);"网页不会当前文档处装入任何内容,如点我没有反应的!

【例12】逻辑运算(三目运算(?:)、void、typeof、instanceof) other();

6. 正则表达式

正则表达式的本质是一种特殊字符串,这种特殊字符串允许使用“通配符”,因此一个正则表达式字符串可以匹配一批普通字符串。JavaScript正则表达式的元字符.()[]{}\^$|?*+。JavaScript正则表达式直接量必须放在两条斜线之间,也可使用new RegExp(模式字符串, 属性); 生成正则表达式---RegExp对象。

javascript正则表达式合法字符、通配符、频次修饰符
合法字符 通配符 频率修饰符 new RegExp()属性修饰符
字符 说明 通配符 说明 修饰符 说明 修饰符 说明
x 任何合法字符 \d 数字字符[0-9] ? 0或1次 g 0或1次
\n 换行符(\u000A) \D 非数字字符[^0-9] * 0或多次 i 0或1次
\r 回车符(\u000D) \s 所以空白字符[ \t\n\x0B\f\r] + 1或多次 m 多次
\t 制表符(\u0009) \S 所以非空白字符[^ \t\n\x0B\f\r] {m,n} 最少m次最多n次
\f 换页符(\u000C) \w 所有单词字符[a-zA-Z_0-9] {,} 最少0次最多无限次
\cx 控制符ctrl x:a-zA-Z如\cc ctrl-c \W 所有非单词字符[^a-zA-Z_0-9] {,n} 最少0次最多n次
\xhh 0xhh表示的字符 . 任何字符[^\n\r] {m,} 最少m次最多无限次
\uhhhh 0xhhhh表示的unicode字符 ^ 一行的开头 {m} m次
$ 一行的结尾
[] A-Z,a-z,0-9,\u4e00-\u9fa5 汉字
延伸阅读:《javascript正则表达式》cnblogs博客 延伸阅读:《JavaScript RegExp 对象》w3school

【例13】正则表达式(if-else; swithch-break) regex();

4.1.6 语句

语句块就是使用花括号包含的多个语句,语句块是一个整体的执行体,类似于一个单独的语句。虽然语句块类似于一个单独的语句,但语句块后不需要以分号结束。但语句块中的每个语句都需要以分号结束。

1. 分支控制

【例14】分支控制(if-else; swithch-break) if_switch();

2. 循环控制

循环控制语句while, do-while, for, for-in, break, continue

【例15】循环控制 for_while();死循环(4.1/deadLoop.html)

3. try-catch控制

异常抛出语句(throw)、异常捕捉语句(try-catch-finally)

【例16】异常抛出语句(throw)、异常捕捉语句(try-catch-finally) try_catch();


返回目录