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). 由于不存在函数签名的特性,函数不能重载

3. javacript高级程序设计-基本概念的更多相关文章

  1. Javascript高级程序设计——基本概念(一)

    一.语法 EMCA-262通过叫做ECMAScript的“伪语言”为我们描述了javascript实现的基本概念 javascript借鉴了C的语法,区分大小写,标示符以字母.下划线.或美元符号($) ...

  2. 7. javacript高级程序设计- 函数表达式

    1. 函数表达式 1.1 函数定义 函数定义的方式有两种:一种是函数声明,另一种就是函数表达式. (1). 函数声明:函数声明的重要特征就是函数声明提示,函数声明会在函数执行前执行 function ...

  3. Javascript高级程序设计——基本概念(二)

    相等操作符: 相等==:这个操作符会先转换操作数,强制类型转换,然后再比较他们的相等性. null == undefined //true NaN == NaN //false"5" ...

  4. 25. javacript高级程序设计-新兴的API

    1. 新兴的API requestAnimationFrame():是一个着眼于优化js动画的api,能够在动画运行期间发出信号.通过这种机制,浏览器就能够自动优化屏幕重绘操作 Page Visibi ...

  5. 24. javacript高级程序设计-最佳实践

    1. 最佳实践 l 来自其他语言的代码约定可以用于决定何时进行注释,以及如何进行缩进,不过JavaScript需要针对其松散类型的性质创造一些特殊的约定 l javascript应该定义行为,html ...

  6. 23. javacript高级程序设计-数据存储

    1. 数据存储 1.1 cookie HTTP Cookie, cookie,最初用来在客户端存储回话信息. (1). 限制,不同浏览器对特定域名下的cookie 的个数有限制,每个域名下最好不要操过 ...

  7. 22. javacript高级程序设计-高级技巧

    1. 高级技巧 1.1 函数 l 可以使用惰性载入函数,将任何分支推迟到第一个调用函数的时候 l 函数绑定可以让你创建始终在指定环境中运行的函数,同时函数柯里化可以让你创建已经填写了某些参数的函数 l ...

  8. 21. javacript高级程序设计-Ajax与Comet

    1. Ajax与Comet 1.1 XMLHttpRequest对象 IE5是第一款引入XHR对象的浏览器,IE5中是通过MSXML库中的一个ActiveX对象实现的.因此在IE中可能存在MSXML2 ...

  9. 20. javacript高级程序设计-JSON

    1. JSON JSON是一种数据格式,存在以下三种类型的值: l 简单值:使用与JavaScript相同的语法,可以在JSON中表示字符串.数值.布尔值和null,不支持 undefined,例如: ...

随机推荐

  1. vtk第一个程序

    首先 设置环境变量 解决方案资源管理器 选中项目名字 而不是ALL_BUILD 选项卡 项目-属性 右侧 附加依赖项->编辑 kernel32.libuser32.libgdi32.libwin ...

  2. pip高级使用技巧以及搭建自己的pypi服务器

    =========================  pip 访问非官方pypi源, 以及代理的设置=========================在Windows下安装某些Python的C ext ...

  3. 2015年11月25 Java基础系列(二)Thread Runnable线程初级讲解

    序,线程是比进程小的进程,非常广泛的被使用. 一.继承Thread实现线程操作 1.注意setDaemon(boolean)方法,参数为true时为守护线程,参数为false时为用户线程. 守护线程的 ...

  4. 开机自动连接/断开VPN 批处理

    或许大家在工作或生活中有接触到VPN,如果使用Windows自带的VPN来连接,每次开机要像宽带拨号那样,右击该VPN连接图标,然后选择“连接”(如果未记住密码甚至还要输入密码),然后点击确定,有点麻 ...

  5. POJ 1905 Expanding Rods

                           Expanding Rods Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 1 ...

  6. 【bzoj1060】[ZJOI2007]时态同步

    题目描述 小Q在电子工艺实习课上学习焊接电路板.一块电路板由若干个元件组成,我们不妨称之为节点,并将其用数字1,2,3-.进行标号.电路板的各个节点由若干不相交的导线相连接,且对于电路板的任何两个节点 ...

  7. I’ve seen the world,lit it up as my stage now

    I've seen the world,lit it up as my stage now 阅尽繁华 点亮红尘做舞台 Channeling angels in,the new age now 粉末登场 ...

  8. .net的一些新语法的整理

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...

  9. [原创]svn 常见错误总结

    错误: Unable to make name in 'X:\nfs\drivers\can_uart\.svn\tmp' 解决: 改变当前文件夹的权限 linux 下显示修改的文件名 参考链接:ht ...

  10. Inno Step 安装包程序 写INI配置文件脚本

    [INI]Filename: "{app}\Config\config.ini"; Section: "config";Key: "name" ...