3. javacript高级程序设计-基本概念

1.1 语法

ECMAScript借鉴了C和其他类C语言的语法

1.1.1 区分大小写

ECMAScript中的一切(变量,函数和操作符)都是区分大小写的,变量test和Test是不同的变量

1.1.2 标识符

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

(1). 第一个字符必须是一个字母,下划线或者一个美元符号

(2). 其他字符可以是字母、下划线、美元符号或数字

标识符中的字母也可以包含扩展的ASCII或者Unicode字母字符

1.1.3 注释

单行注释以两个斜杠开头,如下所示

//单行注释

多行注释

/*

*

*多行注释

*

*/

1.1.4 严格模式

要在整个脚本中启用严格模式,可以在顶部添加如下代码

“use strict”

在函数上方包含这条编译指令,可以指定函数在严格模式下运行

“use strict”

1.1.5 语句

var sum = 1 +2

var sum = 1+2;

虽然语句结尾的分号不是必须的,但是建议在语句结尾都不要省略

1.2 变量

定义变量时要使用var 操作符,如下所示

var message;

这样定义的变量奖定义为该变量作用域中的局部变量;

省略var 操作符定义的变量为全局变量,但建议不要这么使用

message;

定义的变量可以用来保存任何值

message =10;

message = “hi”;

1.3 数据类型

ECMAScript中有5中简单数据类型:Undefined ,Null,Boolean,Number和String。还有一种复杂数据类型Object

1.3.1 typeof操作符

typeof用于检测给定变量的数据类型,对一个值使用typeof操作符可能返回下列某个字符串:

  1. “undefined”—这个值未定义
  2. “boolean”—这个值是布尔值
  3. “string”—这个值是字符串
  4. “number”—这个值是数字
  5. “object”—这个值是对象或者null
  6. “function”—这个值是函数

1.3.2 Undefined类型

Undefined类型只有一个值,就是undefined,使用var 定义的变量未赋值就是undefined

1.3.3 Null类型

Null类型只有一个值,就是null,用来表示一个空对象指针,通常将保存对象的变量初始化为null

1.3.4 Boolean类型

true或false两种类型

1.3.5 Number类型

Number类型用来表示数字,可以表示整数或者浮点数

l 整形

  1. 十进制

var num = 10;

  1. 八进制:以数字0开头,无效的8进制数据会省略前导0

var num = 070  //8进制56

var num = 089  //无效8进制,为89

  1. 16进制:十六进制前两位必须是0x,无效的16进制会报语法错误

var num = 0xA //十六进制的10

l 浮点数

  1. 浮点数值,该数值中必须包含一个小数点,并且小数点后面必须至少有一位数字
  2. 对于极大极小的数值,可以使用e表示法

l 数值范围

最大值Number.MAX_VALUE表示,超出最大值转化为Infinity(正无穷大)

最小值Number.MIN_VALUE表示,小于最小值转化为-Infinity(负无穷大);

可以使用isFinite()函数监控数值是否在最大和最小之间

l NaN

NaN,即非数值,表示一个该返回数值的操作未返回数值,NaN与任何数值不相等,可以使用isNaN判断是否NaN

l 数值转换

  1. Number()函数转换
  • Ø 如果是Boolean值,true和false将分别转换为1和0
  • Ø 如果是数字值,只是简单的传入和返回
  • Ø 如果是null值,返回0
  • Ø 如果是undefined,返回NaN
  • Ø 如果是字符串,遵循下列规则:
  1. 如果只包含数字,则转化为十进制,省略前导0
  2. 如果包含有效的浮点格式,则转化为浮点数值,省略前导0
  3. 如果包含有效的十六进制,则将其转化为相应的十进制
  4. 如果字符串是空的,则转化为0
  5. 其他的则转化为NaN
  • Ø 如果是对象,则调用对象的valueOf()方法,然后依照前面的转化规则,如果转化结果为NaN,则调用对象的toString()方法,在依照前面的规则转化
  1. parseInt()
  • Ø parseInt()函数在转化字符串时,会忽略字符串前面的空格,直到找到第一个非空格字符
  • Ø 该函数提供第二个操作符,转换时使用的基数(即多少进制)
  1. parseFloat()
  • Ø parseInt()函数在转化字符串时,会忽略字符串前面的空格,直到找到第一个无效的浮点字符为止
  • Ø parseFloat()识别所有的浮点字符格式

1.3.6 String类型

String类型用于表示由0或者多个16位Unicode字符组成的字符序列,即字符串,字符串可以由双引号(“)和单引号(‘)表示。

(1). 转义序列

转义序列    字符

\b           退格

\f           走纸换页

\n           换行

\r           回车

\t           横向跳格 (Ctrl-I)

\'           单引号

\"           双引号

\\           反斜杠

\xnn       以十六进制代码nn表示的一个字符

\unnnn     以十六进制代码nnnn表示的一个Unicode字符

(2). 字符串是不可变的

(3). String()函数转换

  1. 如果值有toString()方法,则调用该方法(没有参数)并返回相应的结果
  2. 如果值是null,则返回”null”
  3. 如果值是undefined,则返回”undefined”

1.3.7 object类型

对象其实就是一组数据和功能的集合,对象可以通过执行new操作符后跟要创建的对象类型的名称来创建:

var obj = new Object();

Object的每个实例都具有下列属性和方法:

(1). constructor:保存着用于创建当前对象的函数

(2). hasOwnProperty(propertyName):用于检测给定的属性在当前对象实例中是否存在。其中,作为参数的属性名(propertyName)必须以字符串形式指定

(3). isPrototypeOf(object):用于检查传入的对象是否是传入的原型

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

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

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

(7). valueOf():返回对象的字符串、数值或布尔值表示。通常与toString()方法的返回值相同

1.4 操作符

1.4.1 一元操作符

(1). 递增,递减操作符 ++,--

(2). 一元加,减操作符 + ,-

1.4.2 位操作符

(1). 按位非 ~,本质位操作符的负数-1

(2). 按位与 &

(3). 按位或 |

(4). 按位异或 ^

(5). 左移  << 原来的数字乘以 2的左移位数的阶乘 不影响符号

(6). 右移  >> 原来的数字除以 2的左移位数的阶乘 不影响符号

(7). 无符号右移 >>> 将数值的所有32位都向右移动,包括符号数

1.4.3 布尔操作符

(1). 逻辑非 !

(2). 逻辑与 &&

(3). 逻辑或 ||

1.4.4 乘性操作符

(1). 乘法 *

(2). 除法 /

(3). 求模 %

1.4.5 加性操作符

(1). 加法

(2). 减法

1.4.6 关系操作符

(1). 小于(<),大于(>),小于等于(<=),大于等于(>=),返回布尔值

(2). 比较规则如下:

  1. 如果两个数值,则执行数值比较
  2. 如果两个操作数都是字符串,则比较字符串对应的字符编码值
  3. 如果一个操作数是数值,则将另一个操作数转化为数值进行比较
  4. 如果一个操作数是对象,则调用对象的valueOf()方法,得到的值按照前面的规则进行比较;如果对象没有valueOf()方法,则调用对象的toString()方法,得到的值按照前面的方法进行比较
  5. 如果一个操作符是布尔值,则将其转化为数值进行比较

1.4.7 相等操作符

(1). 相等和不相等 ==  !=

(2). 全等和不全等 ===  !==

1.4.8 条件操作符

variable = boolean_expression?true_value:false_value;

1.4.9 赋值操作符

(1). 简单的赋值操作符由等于号(=)表示

var num =10;

(2). 复合赋值操作符

乘赋值 *=

除赋值 /=

模赋值 %=

加赋值 +=

减赋值 -=

左移赋值 <<=

有复合右移 >>=

无符号右移 >>>=

1.4.10 逗号操作符

var num1=1,num2=2,num3=3;

1.5 语句

1.5.1 if语句

if(condition) statement1 else statement2

1.5.2 do-while语句

do {

             statement

}while(expression);

1.5.3 while语句

while(expression) statement;

1.5.4 for语句

for(initialization;expression;post-loop-expression) statement

1.5.5 for-in语句

for(property in expression) statement

1.5.6 break和continue语句

break 和 continue 语句用于在循环中精确的控制代码的执行;

break语句会立即退出循环,强制执行循环后面的语句;

continue退出循环后会从循环的顶部继续执行

1.5.7 switch语句

switch(expression):{

      case value1:

                                  statement;

                                  break;

      case value:2

                                  statement;

                                  break;

 default:

statement;

}

1.5.8 with语句

with语句的作用是将代码的作用域设置到一个特定的对象中

with(expression) statement;

1.5.9 label语句

使用label语句可以在代码中添加标签,以便将来使用

label:statement;

1.6 函数

(1). 声明

function functionName(arg0,arg1,arg2,…,argN){

        statements

}

(2). 未指定返回值的函数返回的是一个特殊的undefined值

(3). ECMAScript中没有函数签名的概念,因为其函数参数是以一个包含0或者多个值的数组的形式传递

(4). 传递任意数量的参数,并且可以通过arguments对象来访问这些参数

(5). 由于不存在函数签名的特性,函数不能重载

转载于:https://www.cnblogs.com/SLchuck/p/4321882.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值