JavaScript基础概念
JavaScript是弱类型脚本语言,声明变量时无需指定变量的数据类型。JavaScript变量的数据类型是解释时动态决定的。但是JavaScript的值保存在内存中,也是数据类型的。
变量分类
基本数据类型
JavaScript基本数据类型有如下五个
-
数值类型
-
布尔类型
-
字符串类型
-
Undefined类型
-
Null类型
1. 数值类型
与强类型语言如C、Java不同,JavaScript的数值类型不仅包括所有的整形变量,也包括所有的浮点型变量。JavaScript语言中的数值都是以IEEE 754双精度浮点数格式保存。JavaScript中的数值形势非常丰富,完全支持用科学计数法表示。科学计数法形如5.12e2代表5.12乘以10的2次方,5.12E2也代表5.12乘以10的2次方。
科学计数法中E为间隔符号,E不区分大小写。
var a = 5E2;var b = 1.23e-3;
注意:数值直接量不要以0开头。因为JavaScript支持八进制和十六进制。八进制以0开头,十六进制以0x或0X开头。
当数值类型超出了其表述范围时,将出现两个特殊值:Infinity(正无穷大)和-Infinity(负无穷大。)
// 定义x为最大的数值var x = 1.7976931348623157e308;// 再次增加x的值x = x + 1e292;
2. 字符串类型
JavaScript的子串富川必须用引号括起来,此处的引号既可以是单引号,也可以是双引号。
var a = \"12345678912aaa\";var a = \'12345678912aaa\';
JavaScript和Java中的字符串主要有两点区别:
-
JavaScript中的字符串可以用单引号括起来,没有字符和字符串的区别;
-
JavaScript中比较两个字符串的字符序列是否相等使用 == 即可,无需使用equals()方法。
常用的转义字符
序 | 转义字符 | 使用说明 |
---|---|---|
0 | NUL 字符(\\u0000) | |
1 | \\b | 后退一格(Backspace)退格符(\\u0008) |
2 | \\f | 换页(Form Feed)(\\u000C) |
3 | \\n | 换行(New Line)(\\u000A) |
4 | \\r | 回车(Carriage Return)(\\u000D) |
5 | \\t | 制表(Tab)水平制表符(\\u0009) |
6 | ’ | 单引号(\\u0027) |
7 | \” | 双引号(\\u0022) |
8 | \\ | 反斜线(Backslash)(\\u005C) |
9 | \\v | 垂直制表符(\\u000B) |
10 | \\xNN | 由两位十六进制数值NN指定的Latin-1字符 |
11 | \\uNNNNN | 由四位十六进制数NNNN指定的Unicode字符 |
12 | \\NNN | 由一位到三位八进制数(1到377)指定的Latin-1字符。ECMAScript v3不支持,不要使用这种转义序列 |
3. 布尔类型
布尔类型的值只有两个:true和false。布尔类型的值通常是逻辑运算的结果,或用于标志对象的某种状态。
var a = false;var b = true;
4. Undefined 和 null
Null:
null是js中的关键字,表示空值,null可以看作是object的一个特殊的值,如果一个object值为空,表示这个对象不是有效对象。
Undefined:
undefined不是js中的关键字,其是一个全局变量,是Global的一个属性,以下情况会返回undefined:
-
使用了一个未定义的变量;var i;
-
使用了已定义但未声明的变量;
-
使用了一个对象属性,但该属性不存在或者未赋值;
-
调用函数时,该提供的参数没有提供:
function func(a){console.log(a);}func();//undefined
- 函数没有返回值时,默认返回undefined
var aa=fun();aa; //undefined
但如果不进行精确比较,很多时候undefined和null本身就想等,即nullundefined将返回true。如果要精确区分null和undefined,应该考虑使用精确等于符(=)
标识符
和其他任何编程语言一样,JavaScript 保留了一些标识符为自己所用。
JavaScript 同样保留了一些关键字,这些关键字在当前的语言版本中并没有使用,但在以后 JavaScript 扩展中会用到。
JavaScript 标识符必须以字母、下划线(_)或美元符($)开始。
后续的字符可以是字母、数字、下划线或美元符(数字是不允许作为首字符出现的,以便 JavaScript 可以轻易区分开标识符和数字)。
注释
JavaScript中的注释分为两种,单行注释和多行注释
示例代码:
// 单行注释---弹出警告框alert(\"single\");/*多行行注释---弹出警告框alert(\"multiple\");*/alert(\"EOL\"); //行尾注释
注意事项
保持良好的注释风格有利于后期维护
关键字
关键字可用于表示控制语句的开始或结束,或者用于执行特定操作等。关键字也是语言保留的,不能用作标识符。以下是ECMAScript的全部关键字:
break | do | instanceof | type
case | else | new | var
catch | finally | return | void
continue | for | switch | while
debugger | function | this | with
default | if | throw
delete | in | try
保留字
保留字也不能用作标识符,尽管保留字在这门语言中还没有任何特定的用途,但它们有可能在将来被用作关键字。以下是ECMA-262第3版定义的全部保留字:
abstract | enum | int | short
boolean | export | interface | static
byte | extends | long | super
char | final | native | synchronized
class | float | package | throws
const | goto | private | transient
debugger | implements | protected | volatile
double | import | public
第5版把在非严格模式下运行时的保留字缩减为下列这些:
class | enum | extends | super
const | export | import
在严格模式下,第五版还对以下保留字施加了限制”
implements | package | public
interface | private | static
let | protected | yield
注意:let和yield是第5版新增的保留字,其他都是第3版定义的。
在实现ECMAScript3和JavaScript引擎中使用关键字作标识符,会导致“Identifier Expected”错误。而使用保留字作标识符可能会也可能不会导致相同的错误,具体取决于特点的引擎。
除了上面列出的保留字和关键字。ECMA-262第5版对eval和arguments还施加了限制。在严格下,这两个名字也不能用作标识符或属性名,否则会抛出错误。