javascript高级程序设计之基本概念

1、语法

1.1 区分大小写

变量、函数名和操作符都区分大小写

1.2 标识符

标识符是指变量、函数、属性的名字,或者函数的参数。标识符可以是按照下列格式规则组合起来的一或多个字符

  • 第一个字符必须是一个字母、下划线(_)或一个美元符号($)
  • 其它字符可以是字母、下划线、美元符号或者数字

标识符中的字母也可以包含扩展的ASCII或Unicode字母字符,但我们不推荐这样做

按照惯例,ECMAScript标识符采用驼峰大小写格式,也就是第一个字母小写,剩下的每个有意义的单词的首字母大写。

1.3 注释

ECMAScript使用C风格的注释,包括单行注释和块级注释。

1.4 严格模式

ECMAScript5引入了严格模式的概念。严格模式是为Javascript定义了一种不同的解析与执行模型。在严格模式下,ECMAScript3中的一些不确定的行为将得到处理,而且对某些不安全的操作会抛出错误。要在整个脚本中启用严格模式,可以在顶部添加如下代码:"use strict";

在函数内部的上方包含这条编译指示,也可以指定函数在严格模式下执行

1.5 语句

ECMAScript中的语句以一个分号结尾;如果省略分号,则由解析器确定语句的结尾

虽然语句结尾的分号不是必需的,但我们建议任何时候都不要省略它。因为加上这个分号可以避免很多错误。

可以使用C风格的语法把多条语句组合到一个代码块中,即代码块以左花括号({}开头,以右花括号(})结尾

2、关键字和保留字

ECMA-262的关键字

break do instanceof typeof
case else new var
catch finally return void
continue for switch while
debugger* function this with
default if  throw delete
in  try    

ECMA-262保留字

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  

3、变量

是松散类型,可以用来保存任何类型的数据。每个变量仅仅是一个用于保存值的占位符而已。定义变量时使用var操作符,后跟变量名(即一个标识符)。没有赋值的变量会保存一个特殊的值undefined。使用var操作符定义的变量将成为定义该变量的作用域中的局部变量。如果在函数中使用var定义一个变量,那么这个变量在函数退出后就会被销毁。

可以使用一条语句定义多个变量,只要每每个变量用逗号分隔开即可。

4、数据类型

有5种简单数据类型:Undefined,Null, Boolean,Number,String

1种复杂数据类型:Object

4.1 typeof操作符

负责提供给定变量的数据类型。对一个值使用typeof操作符可以返回下列值

"undefined":这个值未定义

"boolean":是布尔值

"string":是字符串

“number":是数值

"object":是对象或null

"function":是函数

typeof是操作符,不是函数。

4.2 Undefined类型

只有一个值,即特殊的undefined。在使用var声明变量但未对其加以初始化时,这个变量的值是undefined.

4.3 Null类型

也是只有一个值,这个特殊的值是null。表示一个空对象指针,这也正是使用typeof操作符检测null值时会返回"object"的原因。

如果定义的变量准备在将来用来保存对象,那么最好将该变量初始化为null而不是其他值。这样只要直接检查null值就可以知道相应的变量是否已经保存了一个对象的引用。

null和undefined的相等性测试返回true

4.4 Boolean类型

有两个字面值:true和false

转为Boolean类型时使用转型函数Boolean()

数据类型 转换类true的值 转换为false的值
Boolean true false
String 任何非空字符串 空字符串
Number 任何非零数字值 0和NaN
Object 任何对象 null
Undefined n/a(表示不适用) undefined

对于if语句自动执行相应的Boolean转换

4.5 Number类型

支持十进制,八进制,十六进制 

八进制字面值的第一位必须是0,然后是数字序列(0-7)

十六进制字面值的前两位必须是0x,后跟任何十六进制数字(0-9和a-f),字母可以大写也可以小写。

(1)浮点数值

必须包含一个小数点,并且小数点后面必须至少有一个数字。因为保存浮点数值需要的内存空间是保存整数值的两倍,所在ECMAScript会不失时机地将浮点数值转换为整数。

对于那些极大或者极小的数值,可以用e表示法。

浮点数值的最高精度是17位小数。

(2)数值范围

最小数值保存在Number.MIN_VALUE,值是5e-324

最大数值保存在Number.MAX_VALUE,值是1.7976931348623157e+308

如果超过范围,自动转换成Infinity值。使用isFinite()函数判断是否在最小与最大值之间
(3) NaN

非数值,用于表示一个本来要返回数值的操作数未返回数值的情况。在ECMAScript中,任何数值除以0会返回NaN

任何涉及NaN的操作都会返回NaN

NaN与任何值都不相等,包括NaN本身

isNan()函数来判断是否不是数值

(4)数值转换

有3个函数将非数值转换类数值:Number(),parseInt()和parseFloat()。第一个可以用于任何数据类型,后两个用于把字符串转换成数值

Number()函数转换规则

  • Boolean值,true和false分别转换为1和0
  • 数字值,只是简单的传入和返回
  • null值,返回0
  • undefined,返回NaN
  • 字符串,如果字符串中只包含数字(包含前面带正号和负号的情况),则将其转换为十进制数值;如果字符串中包含有效的浮点格式,则将其转换为对应的浮点数值;如果字符串中包含有效的十六进制格式,则将其转换为相同大小的十进制整数值;如果字符串是空的(不包含任何字符),则将其转换为0;如果字符串中包含除上述格式之外的字符,则将其转换为NaN; 
  • 对象,调用对象的valueOf方法

4.6 String类型

表示由零或多个16位Unicode字符组成的字符序列,即字符串。字符串可以由双引号(")或引号(')表示。

4.7 Object类型

是一组数据和功能的集合。通过执行new操作符后跟要创建的对象类型的名称来创建。

Constructor:保存着用于创建当前对象的函数。

hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中(不是在实例原型中)是否存在

isPrototypeOf(object):用于检查传入的对象是否是另一个对象的原型。

propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用for-in语句 

toLocalString():返回对象的字符串表示,该字符串与执行环境 的地区对应

toString():返回对象的字符串表示

valueOf():返回对象的字符串、数值或布尔值表示。

5、操作符

5.1 一元操作符

  • 递增和递减操作符
  • 一元加和减操作符

5.2 位操作符

  • 按位非~
  • 按位与&
  • 按位或|
  • 按位异或^
  • 左移<<
  • 有符号的右移>>
  • 无符号的右移>>>

5.3 布尔操作符

  • 逻辑非!
  • 逻辑与&&
  • 逻辑或||

5.4 乘性操作符

  • 乘法*
  • 除法/
  • 求模%

5.5 加性操作符

  • 加法+
  • 减法-

5.6 关系操作符

<,>,<=,>=

5.7 相等操作符

=,!=,===,!==

5.8 条件操作符

variable = boolean_expression ? true_value: false_value

5.9 赋值操作符

=

5.10 逗号操作符

可以在一条语句中执行多个操作

用于赋值时,总是返回表达式中的最后一项

6、语句

6.1 if语句

6.2 do-while语句

6.3 while语句

6.4 for语句

6.5 for-in语句

6.6 label语句

6.7 break和continue语句

6.8 with语句

6.9 switch语句

7、函数

在函数定义时不必指定是否返回值。return语句也可以不带有任何返回值

7.1 理解参数

ECMAScript函数不介意传递时来多少个参数,也不在乎传进来参数是什么数据类型。

函数体内可以通过arguments对象来访问这个参数数组。其实arguments对象只是与数组类似。

7.2 没有重载

ECMAScript函数不能像传统意义上那样实现重载

猜你喜欢

转载自blog.csdn.net/wuli2496/article/details/114047744