欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

初识JavaScript

程序员文章站 2022-06-11 08:30:20
一、语法结构 编程语言的语法结构是一套基础性规则,用来描述如何使用这门语言来编写程序。作为语法的基础,它规定了诸如变量名的命名规范,注释的规范,以及程序语句之间如何分隔等规则。下面是介绍JavaScript的基本语法结构。 1、字符集JavaScript程序是用Unicode字符集编写的,所以它几乎 ......

一、语法结构

编程语言的语法结构是一套基础性规则,用来描述如何使用这门语言来编写程序。作为语法的基础,它规定了诸如变量名的命名规范,注释的规范,以及程序语句之间如何分隔等规则。下面是介绍javascript的基本语法结构。


1、字符集
javascript程序是用unicode字符集编写的,所以它几乎支持世界上的所有语言。


2.1.1区分大小写
javascript是区分大小写的,关键字,变量名,函数名和所有标识符都必须采用一致的大小写形式,如关键字while和while、while分别代表不同的意义。
但需要注意的是,html并不区分大小写(尽管xhtml区分大小写,但由于浏览器的容错能力还是会正确解析渲染的)。由于他和客户端javascript联系紧密,因此这里很容易混淆。许多客户端javascript对象和属性与他们所表示的html标签和属性同名,在html中这些标签和属性名可以使用大写也可以是小写,而在javascript中必须是小写。例如在html中设置事件处理程序时,onclick属性可以写成onclick,但在javascript代码(或者xhtml文档)中,必须使用小写的onclick。

2.1.2 空格、换行符和格式控制符
javascript会忽略程序中标识(token)之间的空格,换行符。由于可以在代码中随意使用空格和换行,因此可以采用整齐,一致的缩进来形成统一的编码风格,从而提高代码的可读性。
除了可以识别普通的空格符(\u0020),javascript还可以识别如下这些表示空格的字符:
水平制表符(\u0009)

垂直制表符(\u000b)

换页符(\u000c)

不中断空白(\u00a0)

字节序标记(\ufeff)
javascript将如下字符识别为行结束符:
换行符(\u000a)
回车符(\u000d)
行分隔符(\u2028)
段分隔符(\u2029)
回车符加换行符在一起被解析为一个单行结束符。

2.2注释
javascript支持两种格式的注释。
行注释:在“//”之后的文本都会被javascript当做注释忽略,
多行注释:“/*”多行注释“*/,注意多行注释是不能嵌套的。


2.3直接量
所谓直接量就是程序中可以直接使用的数值,如下类型:
整数:1,2,3...
小数:1.2,2.34,...
字符串:“hello world”
bool:true,false。
正则表达式:/正则表达式规则/
null:空


2.4标识符的命名规则
javascript中标识符必须以字母、下划线或$开始,后续的字符可以是字母,数字,下划线或美元符($)。需要注意的是和其它语言一样,标识符名是不能以数字开头的。

2.5保留字

我 们在命名变量名时不能与javascript的保留字重名。下面是一些常见关键字:

abstract arguments boolean break byte
case catch char class* const
continue debugger default delete do
double else enum* eval export*
extends* false final finally float
for function goto if implements
import* in instanceof int interface
let long native new null
package private protected public return
short static super* switch synchronized
this throw throws transient true
try typeof var void volatile
while with yield  

2.6可选的分号
和其它许多编程语言一样,javascript使用分号(;)将语句分隔开,这对增强代码的可读性和整洁性是非常重要的,缺少分隔符,一条语句的结束就变成了下一条语句的开始。在javascript中如果语句独占一行,通常可以省略分号,但还是建议使用分号来明确标记语句的结束,这是一种编程风格,还有一种就是在任何可以省略分号的地方都将其省略,只有在不得不用的时候才使用分号,介于这种风格需要注意以下问题:

// 1、两条语句独占一行,并且能被正确解析。所以可以省略分号
a = 3
b = 4

// 2、两条语句在一行,必须用分号标明语句的结束位置
a = 3; b = 4;  // b的分号可以省略

// 3、下面要注意的就是javascript并不是将所有独占一行的语句都自动填补分号
//    前提是独占一行的语句能够得到正确的解析,如下代码:
var a
a
=
3
console.log(a)
// 会被解析成如下代码
var a;
a = 3;
console.log(a);

// 4、下面是很容易造成混淆和难以理解的地方
var y = x + f
(a+b).tostring()
// 也许我们会认为javascript会解析成这样var y = x + f;(a+b).tostring()
/*
实际javascript会解析成var y = x + f(a+b).tostring()
而上述代码的本意并不是这样,所以为了正确解析,需要写分号来明确语句的结束。
通常来讲,如果一条语句以(、[、/、+、-开始,name它既有可能和前一条
语句何在一起解析。以/、+、-开始的语句并不常见,而已(和[开始的语句
则非常常见,有些程序员喜欢保守的在语句前加一个分号,这样哪怕之前的
语句被修改了,分号被误删除了,当前语句还是会正确解析:
*/
var y = x + f;
;(a+b).tostring();

// 5、return和continue需要注意的地方
return
true;
/*
本意是 return true;
实际是return;true;
在return和continue后面的表达式不能有换行。如果添加了换行,程序则只有在极特殊的情况才会报错,而且程序的调试非常不方便。
*/

// 关于++和--需要注意的地方
x
++
y
// 会被解析成x;++y;

 所以为了避免上述情况的发生,和代码的可读性最好还是在语句的结束位置添加分号。

二 数据类型、值和变量
javascript的数据类型分为两类
原始类型(primitive type):数字、字符串、布尔值。
对象类型(object type):object。


javascript有两个特殊的原始值:null和undefined(未定义),它们不是数字,字符串和布尔值,它们通常分别代表了各自特属于类型的唯一成员。
关于对象object是属性(property)的集合,每个属性都由“键:值”构成。
普通的javascript对象是“键:值”的无序集合,javascript同样定义了一种特殊对象数组(array),表示带编号的值的有序集合。javascript为数组定义了专用的语法,使数组拥有一些和普通对象不同的特性。

javascript还定义了另一种特殊对象函数,函数是具有与它向关联的可执行代码的对象,通过调用函数来运行可执行代码,并返回运算结果。
如果函数用来初始化(使用new运算符)一个新建的对象,我们称之为构造函数(constructor)。除了数组array类和函数之外,javascript定义了三种有用的类,日期(data)定义了日期对象,正则(regexp)类定义了正则表达式对象。错误(error)定义了javascript程序运行时错误和语法错误的对象。


javascript解释器有自己的内存管理机制,可以自动对内存进行垃圾回收。这意味着程序员可以按需创建对象,不必担心这些对象的销毁和内存回收。当不再有任何引用指向一个对象,解释器就会知道这个对象没用了,然后自动回收它所占用的内存资源。

javascript程序可以更改对象属性值和元组元素的值,数字、布尔值、null和undefined属于不可变类型。javascript可以*的进行数据类型转换,如果在程序期望使用字符串的地方使用了数字,javascript会自动将数字转换成字符串,如果在期望使用布尔值的地方使用了非布尔值,javascript会进行相应的转换。


javascript变量是无类型的,变量可以被赋予任何类型的值,同样一个变量可以重新赋予不同类型的值。使用var关键字来声明变量。javascript采用词法作用域(lexical scoping)。不在函数内声明声明的变量称为全局变量,它在javascript程序中的任何地方都是可见的,在函数内部声明的变量被称为局部变量,局部变量会随着函数的结束而销毁。