第三章 基本概念

3.1语法

3.1.1区分大小写

ECMAScript中的一切(变量、函数名和操作符)都区分大小写。

3.1.2标识符

指变量、函数、属性的名字,或者函数的参数。

格式规则:

第一个字符必须是字母、下划线(_)、美元符号($);

其他字符可以是字母、下划线、美元符号或数字。

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

不能把关键字、保留字、true、false和null用作标识符。

3.1.3注释

//单行注释

/*

*多行(块级)注释

*/

3.1.4严格模式

在脚本顶部添加如下代码:"use strict"。

3.1.5语句

ECMAScript中的语句以一个分号结尾;

用花括号将多条语句组合到一个代码块中;

始终在控制语句中使用代码块。

3.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

保留字,可能在将来被用作关键字:

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 let yield

关键字和保留字不能用作标识符。

3.3变量

ECMAScrit的变量是松散类型的,可以用来保存任何类型的数据,每个变量仅仅是一个用于保存值得占位符而已。

定义变量:var(关键字) 变量名(标识符);

使用var操作定义的变量将成为定义该变量的作用域中的局部变量;

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

3.4数据类型

3.4.1typeof操作符

检测给定变量的数据类型。

3.4.2Undefined类型

使用var声明变量但未对其加以初始化时,这个变量的值就是undefined。

对未初始化和未声明的变量执行typeof操作符都返回undefined值。

3.4.3Null类型

空对象指针。只要意在保存对象的变量还没有真正保存对象,就应该明确地让该变量保存null值。

3.4.4Boolean类型

只有两个字面量:true和false;

调用转型函数Boolean(),将一个值转换为其对应的Boolean值。

3.4.5Number类型

1.浮点数值中必须包含一个小数点,并且小数点后面必须至少有一位数字。

2.数值范围:5e-324~1.7976931348623157e+308;

用isFinite()函数确定一个数值是否有穷。

3.NaN:非数值,isNaN()函数确定参数是否“不是数值”。

4.数值转换:

Number()转型函数可用于任何数据类型;

parseInt()和parseFloat()专门用于把字符串转换成数值。

3.4.6String类型

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

1.字符字面量

2.字符串的特点

ECMAScript中的字符串是不可变的;

3.转换为字符串

toString()方法;null和undefined没有这个方法

转型函数String();能够将任意类型的值转换为字符串

要把某个值转换为字符串,可以使用加号操作符把它和一个字符串("")加在一起。

3.4.7Object类型

是一组数据和功能的集合;

var o =  new Object ();

Object 具有下列属性和方法:

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

hasOwnProperty(propertyName以字符串形式指定):检测给定的属性在当前对象实例中是否存在;

isPrototypeOf:检查传入的对象是否是另一对象的原型;

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

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

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

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

3.5操作符:用于操作数据值

3.5.1一元操作符

只能操作一个值的操作符叫做一元操作符。

1.递增和递减操作符:

前置型:变量的值都是在语句被求值以前改变的;

后置型:递增递减操作是在包含它们的语句被求值之后才执行的;

遵循下列规则:

1、包含有效数字的字符串:先转化为数字值,再加减1;

2、不包含有效数字字符的字符串:值为NaN;

3、false:先转化为0再加减1;

4、true:先转化为1再加减1;

5、浮点数值,加减1;

6、对象:先调用valueOf()取得一个可供操作的值再对该值应用前述规则;如果结果是NaN,则在调用toString()后应用前述规则。对象变量变成数值变量。

2.一元加和减操作符

应用于非数值时会对这个值执行转换。

3.5.2位操作符

按内存中表示数值的位来操作数值。先将64位的值转化为32 位的整数,然后执行操作,最后再将结果转化回64位。

对有符号的整数,前31位表示整数的值,第32位表示数值符号(符号位):0表示正数,1表示负数。正数以纯二进制格式存储;负数采用二进制补码(先求数值绝对值的二进制,再求二进制反码,反码加1);

1、(~)按位非,返回数值的反码,本质是操作数的负值减1;

2、(&)按位与,将两个数值的每一位对齐,全1为1,有0为0;

3、按位或(|),有1为1,全0为0;

4、按位异或(^),相同为0,不同为1;

5、左移(<<),不影响符号位;

6、有符号的右移(>>),保留符号位,以符号位的值来填充;

7、无符号右移(>>>),以0填充;

3.5.3布尔操作符

1、逻辑非(!),可应用于ECMAScript中的任何值,首先将操作数转换为一个布尔值,然后求反。

2、逻辑与(&&),全true为true,有false为false,短路操作符,第一个为false则不会求第二个数的值;

在有一个操作数不是布尔值的情况下:

1、第一个操作数是对象,返回第二个操作数;

2、第二个数为对象,只有当第一个数为true才返回该对象;

3、两个数都是对象,返回第二个;

4、有null,则返回null;

5、有NaN,则返回NaN;

6、有undefined,则返回undefined;

3.逻辑或(||),有ture为true,全false为false,第一个数为true,则不会求第二个数的值;

有一个操作数不是布尔值:

1、第一个操作数是对象,返回第一个操作数;

2、第一个数为false,返回第二个数;

3、两个数都是对象,返回第一个;

4、有null,则返回null;

5、有NaN,则返回NaN;

6、有undefined,则返回undefined;

3.5.4乘性操作符

在操作数为非数值的情况下会执行自动的类型转换。

1、乘法(*)

特殊规则:

1、操作数都是数值,执行常规的乘法计算;

2、有NaN,则为NaN;

3、Infinity乘0,为NaN;

4、Infinity乘非0,为Infinity或-Infinity,取决于符号操作数的符号;

5、Infinity乘Infinity,为Infinity;

6、如果有一个操作数不是数值,则在后台调用Number()将其转换为数值,再应用上面的规则。

2.除法(/)

特殊规则:

1、操作数都是数值,执行常规的除法计算;

2、有NaN,则为NaN;

3、Infinity被Infinity除,为NaN;

4、非零有限数被零除,为Infinity或-Infinity,取决于符号操作数的符号;

5、0除0,为NaN;

6、Infinity被任何非零数除,为Infinity或-Infinity,取决于符号操作数的符号;

7、如果有一个操作数不是数值,则在后台调用Number()将其转换为数值,再应用上面的规则。

3.求模(%)

特殊规则:

1、操作数都是数值,执行常规的除法计算;

2、Infinity被Infinity除,为NaN;

3、Infinity被有限大的数值除,为NaN;

4、非零有限大数被零除,为NaN;

5、被除为0,为0;

6、有限大的数值被Infinity除,结果是被余数;

7、如果有一个操作数不是数值,则在后台调用Number()将其转换为数值,再应用上面的规则。

3.5.5加性操作符

1、加法

1、数值加数值,常规计算;

2、有NaN,为NaN;

3、Infinity加Infinity,为Infinity;

4、-Infinity加-Infinity,为-Infinity;

5、Infinity加-Infinity,为NaN;

6、+0加+0,为+0;

7、-0加-0,为-0;

8、+0加-0,为+0;

9、字符串加字符串,拼接;

10、字符串加非字符串,先将非字符串转换成为字符串再拼接;

2、减法

1、数值加数值,常规计算;

2、有NaN,为NaN;

3、Infinity减Infinity,为NaN;

4、-Infinity减-Infinity,为NaN;

5、Infinity减-Infinity,为Infinity;

6、+0减+0,为+0;

7、-0减-0,为+0;

8、+0减-0,为-0;

9、-Infinity减Infinity,为-Infinity;

10、如果有一个操作数是字符串、布尔值、null、undefined,先调用Number()函数将其转换为数值,再按前面规则计算;

11、如果有一个操作数是对象,先调用valueOf()函数取得表示该对象的数值,如果没有valueOf(),则调用toString()并将结果转化为数值,再按前面规则计算;

3.5.6关系操作符

< 、>、<=、>=

1、如果两个操作数都是数值,则执行数值比较;

2、两个字符串,则比较字符编码值,大写字母编码小于小写字母编码;

3、如果一个操作数时数值,则转化另一个数为数值再比较;

4、如果有一个操作数是对象,先调用valueOf()函数取得表示该对象的数值,如果没有valueOf(),则调用toString()并将结果转化为数值,再按前面规则计算;

5、如果一个数是布尔值,则先转换为数值在比较;

6、任何操作数与NaN比较结果都是false;

3.5.7相等操作符

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

先转换操作数(强制转型),然后比较它们的相等性;

转换规则:

1、布尔值转换为数值;

2、字符串和数值比较,字符串转换为数值;

3、有一个对象,先调用valueOf()再比较;

4、null和undefined相等;

5、NaN等于NaN;

6、两个对象比较是不是同一个对象;

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

比较之前不转换操作数;

全等表示两个操作数未经转换就相等的情况;

不全等表示两个操作数未经转换就不相等的情况;

3.5.8条件操作符

variable = boolean_expression ? true_value : false_value;

3.5.9赋值操作符(=)

把右边的值赋给左侧的变量;

复合赋值操作符:*=、/=、%=、+=、—=、<<=、>>=、>>>=。

3.5.10逗号操作符

可以在一个语句中执行多个操作,多用于声明多个变量,还可以用于赋值,返回表达式中最后一项;

3.6语句

ECMA-262规定了一组语句,也称为流控制语句。语句定义了ECMAScript的主要语法,通常使用一个或多个关键字来完成给定任务。

3.6.1if语句

始终使用代码快(以一对花括号括起来的多行代码)

if (contidion1){
     statement1 
   }else if (condition2){
     statement2 
   }else {
    statement3
   }

3.6.2do-while语句

对条件表达式求值前,循环体内的代码至少会被执行一次。

do {
statement
} while (expression)

3.6.3while语句

在循环体内代码被执行之前,就会对出口条件求值。

while (expression) {
statement
}

3.6.4for语句

前置测试循环语句。

for (initialization; expression; post-loop-expression可选) {
    statement
   }

3.6.5for-in语句

是精准的迭代语句,可以用来枚举对象的属性。

for (property in expression) {
statement
}

3.6.6label语句

在代码中添加标签以便将来使用,一般与for语句等循环语句配合使用。

label : statement

3.6.7break和continue语句

用于在循环中精确的控制代码的执行;break 语句会立即退出循环,强制继续执行循环后面的语句;continue语句立即退出循环,然后从循环的顶部继续执行。

3.6.8with语句

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

with (expression) {
statement
}

3.6.9switch语句

switch (expression) {
case value :statement
break ;

default:statement
}

3.7函数

function functionName (arg1,arg 2,…Arg n) {
statements
}

3.7.1理解参数

命名的参数只提供便利,但不是必须的。

无需制定函数的返回值,因为任何ECMAScript函数都可以在任何时候返回任何值;未指定返回值的函数返回的是一个特殊的undefined 值。

ECMAScript 中没有函数签名的概念,因为其函数参数是以一个包含零或多个值的数组形式传递。

可以向ECMAScript函数传递任意数量的参数,并通过argument对象来访问这些参数。

3.7.2没有重载

由于不存在函数签名特性,函数不能重载。

时间: 2024-10-13 03:09:53

第三章 基本概念的相关文章

第三章 基本概念 --《Javascript高级程序设计》

一.语法 1.区分大小写 ECMAScript 中的一切(变量.函数名和操作符)都区分大小写. 2.标识符 所谓标识符,就是指变量.函数.属性的名字,或者函数的参数. 标识符可以是按照下列格式规则组合起来的一或多个字符: 第一个字符必须是一个字母.下划线(_)或一个美元符号($): 其他字符可以是字母.下划线.美元符号或数字. 按照惯例,ECMAScript 标识符采用驼峰大小写格式,也就是第一个字母小写,剩下的每个单词的首字母大写,例如: firstSecond    myCar     do

第三章 基本概念(下) --《Javascript高级程序设计》

六.语句 6.1 if语句 大多数编程语言中最为常用的一个语句就是if 语句.以下是if 语句的语法:if (condition) statement1 else statement2其中的condition(条件)可以是任意表达式:而且对这个表达式求值的结果不一定是布尔值.ECMAScript 会自动调用Boolean()转换函数将这个表达式的结果转换为一个布尔值.如果对condition求值的结果是true,则执行statement1(语句1),如果对condition 求值的结果是fals

第三章 基本概念(第五部分:函数初步)

六. 函数初步 无论在哪门语言,函数都是一个相当核心的概念.通过函数可以封装任意多的语句,刻意在任何地方调用执行.函数实质上是一个短小的脚本,需要反复做一件事时,可以利用函数避免重复键入过多重复的代码.良好的编程习惯要求,先定义函数,再使用它们.定义函数用法如下: function 函数名(参数){函数代码;} 比如封装以下代码: var beatles=["Joln","Paul","George","Ringo"]; fo

《avascript 高级程序设计(第三版)》 ---第三章 基本概念

本章主要介绍Javasript语言的一些语法: 1.严格模式:开启:"use strict"; 2.变量:全部用var来定义,在函数中使用的称为局部变量,不能全局使用. 3.数据类型:undefined,null,boolean,number,string,object.不可以定义自定义类型. 1)使用typeof操作符返回变量的数据类型. 2)关于浮点数,因为存在精度问题,所以不要试图对一个浮点数做比较. 数值范围的问题:在ECMAScript中,最小值是Number.MIN_VAL

[笔记]《游戏架构设计与策划基础》第三章 游戏概念及原型设计

概念设计的过程:产生创意.加工创意和创建游戏概念设计文档. 3.1 创意的来源 (1)大胆设想 (2)利用现有的娱乐资源 (3)利用现有的游戏体系 (4)收集创意 3.2 加工创意 (1)合成--需要考虑如何将两个概念融合而成一款游戏,带给玩家新的游戏体验. (2)共鸣--含有协作的意思,它使故事和主题内容对游戏玩家能够产生更加深刻的影响. 3.3 游戏概念设计文档 一般包括以下要素的部分或全部:      标题--游戏的名称.      平台--游戏适合的平台.      种类--游戏的种类.

JavaScript高级程序设计学习笔记第三章--基本概念

一.标识符: 1.区分大小写 2.命名规则: 第一个字符必须是一个字母.下划线(_)或一个美元符号($) 其他字符可以是字母.下划线.美元符号或数字 标识符中的字母也可以包含扩展的 ASCII 或 Unicode 字母字符(如 À 和 Æ) ,但不推荐这样做. 不能把关键字.保留字.true.false和null用作标识符 3.书写方式:最好按照驼峰大小写格式书写,就是第一个字母小写,剩下的每个单词的首字母大写,但不强制这么做二.注释(两种方式) 单行注释:// 多行注释:/*……*/ 三.严格

《avascript 高级程序设计(第三版)》 ---第三章 基本概念2

1.乘性操作符: 1)*法操作法: Infinity * 0 = NaN  Infinity * 非零 = Infinity 或 - Infinity   2)/法操作符: Infinity / Infinity = NaN 0/0 = NaN N0 / 0 = Infinity 2.关系操作符: < > <= >= != == === 如果有一个数值是数字,将另外一个转换成数字 如果两个都是字符串,则比较第一个字母的ASCII值. 3.条件操作符,赋值操作符,逗号操作符等等. 4

JS高级程序设计学习笔记之第三章基本概念(语法,数据类型,流控制语句,函数)——查漏补缺

一.语法: 区分大小写 2.标识符:就是指变量.函数.属性的名字,或者函数的参数 a.标志符的规则:①第一个字符必须是一个字母.下划线(_)或一个美元符号($).                   ②其他字符可以是字母,下划线,美元符号或者数字. b.标志符采用驼峰大小写格式. c.严格模式:在顶部添加以下代码:"use strict"; d.语句:结尾加入分号.在控制语句中使用代码块为最佳实践. 二.关键字与保留字 三.变量:ECMAScript的变量是松散类型,可以保存任何类型的

第三章 基本概念(第二部分:变量)

二. 变量初步 ECMAScript是一种弱类型语言,表现为变量只是用于保存值的占位符.换言之,变量可以用来保存任何类型的数据. 给变量mind,age赋值: MyMood=”happy”; MyAge=”27”; Js不要求提前声明变量,但是声明变量是一个良好的习惯.你可以一次声明多个变量: var MyMood,MyAge 或者更加精炼: var MyMood=”happy”,MyAge=”27”; 三. 六大数据类型(其实就是变量类型) ECMAScript包括5种简单数据类型和1种复杂数