JavaScript学习第三章
在对JavaScript相应书本的第三章的学习中,我主要学习了ECMAScript的一些基础语法,及其要素。JavaScript的核心语言特性在ECMA-262中是以名为ECMAScript的伪语言的形式来定义的。下列为对ECMAScript的基本概念的简介。
(1):相应的语法语句
1:ECMAScript的语法大量借鉴了C语言以及类C语言(如java和Perl)的语法。
2:ECMAScript中的变量,函数名和操作符都要区分大小写。
3:ECMAScript中可加入注释,"//"为单行注释,
/* 为多行注释。
*
*/
4:严格模式:严格模式是为JavaScript定义的一种不同的解析与执行模型。要在整个脚本中启用严格模式,可在顶部添加代码:"use strict".
在函数内部的上方包含这条编译指示,也可指定函数在严格模式下执行:
function dosomething{
"use strict";
}
5:注意结尾分号(;)以及相应花括号({})的添加。
(2):关键字和保留字
ECMA-262定义了ECMAScript支持的一套关键字,这些关键字标识了ECMAScript语句的开头和/或结尾。根据规定,关键字是保留的,不能用作变量名或函数名。下面是ECMAScript关键字的完整列表:
break else new var typeof
case finally return void
catch for switch while
default if throw delete
in try do instanceof
ECMAScript定义了一套保留字,保留字在某种意义上是为了将来的而保留的单词。因此,保留字不能被用作变量名或函数名。ECMA-262第3版中保留字的完整列表如下:
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
注:在严格模式下,eval和arguements这两个名字不能作为标识符或属性名,否则会抛出错误。
(3):变量
1:定义变量时要使用var操作符,例:
var message;
2:使用一条语句定义多个变量,只需把每条变量用逗号隔开,例:
var mess="hi",
found=21,
you=false;
(4):数据类型
ECMAScript有五种简单数据类型:Undefined,Null,Boolean,Number,String,以及一种复杂数据类型:Object。
1:typeof操作符。
typeof用于检测给定变量的数据类型。
对一个值使用typeof操作符可能返回下列某一字符串:
1:"undefined"----如果这个值未定义。
2:"boolean"---如果这个值是布尔值。
3:"string"---如果这个值是字符串。
4:"number"---如果这个值是数值。
5:"object"---如果这个值是对象或Null。
6:"function"---如果这个值是函数。
下列为操作符使用:
var A="useful";
alert(typeof A) ; //"string"
2:Undefined类型
在使用var声明变量但未对其加以初始化时,这个变量的值是undefined。
3:Null类型
null表示一个空对象指针,在使用typeof检测null值时会返回"object"。例:
var A=null;
alert(typeof A); //"object"
在变量即将用于保存对象时,最好初始化为null。
4:Boolean类型
1:该类型只有两个值:true和false。
2:
数据类型 : Boolean String Number Object Undefined
转换为true的值 : true 任何字符串 任何非零数字值 任何对象 N/A(not applicable)
准换为false的值: false ""(空字符串) 0和NaN null undefined
5:Number类型
注:3.1e2=310=3.1乘10的2次方
1:十进制整数可直接输入。
2:输入八进制数值时,第一位必须是0,然后是八进制数字序列(0~7);例:
var A=067;
注:八进制在严格模式下是无效的。
3:输入十六进制时,数值的前两位必须是0x,然后是(0~9及A~F),大小写字母均可;例:
var A=0xa;
4:NaN(Not 啊Number)是一个特殊数值。在ECMAScript中,任何数值除以非数值会返回NaN,而不影响其它代码的执行。
5:若某次计算超出了数值范围,该数值会被转化为Infinity(正无穷)或-Infinity(负无穷)。isFinite()函数可确定能某数值是否在JavaScript的数值范围内(若是在范围内,返回值为true),例:
alert(isFinite(1));//true
6:Number(),parseInt()和parseFloat()三个函数可以把非数值转化为数值。
Number()的转换规则如下:
1:若为Boolean值,true和false将分别转换为1和0。
2:若为null值,返回0.
3:若为undefined,返回NaN。
4:若为数字,只是简单的传入和返回。
5:若为仅包含数字的字符串,将其转换为相应的十进制数字(注:011会转换为11,而不是八进制);若字符串为空格,转换为0; 其它类型的字符则会转换为NaN。
例:var A=Number("00011"); //11
var A1=Number(" "); //0
parseInt()的转换规则如下:
1:它会忽略字符串前面的空格,直到找到第一个非空格字符。
2:若第一个字符不是数字或负号,返回NaN。
3:若第一个非空格字符为数字,它会继续解析下一个字符,直到遇到非数字字符(包括小数点)
4:它能识别十进制,八进制,十六进制。
5:在字符串后面,可加指定基数来指定进制。
例:var A=parseInt("12wer");//12
var A1=parseInt(" "); //NaN
var A2=parseInt(" 22.2"); //22
var A3=parseInt(" 070"); // 56
var A4=parseInt("AF",16)// 175
var A5=parseInt(" 70",8); // 56
parseFloat()的规则如下:
1:与parseInt()类似,会在第一个非空格数字字符开始解析,直到遇到无效的浮点数数字字符。
2:字符串的第一个小数点是有效的。
3:它只解析十进制。
例:var A=parseFloat("099"); //99
var A1=parseFloat("22.2uuu"); //22.2
var A2=parseFloat("2.2e2"); //220
6:String变量
它即为字符串,可有单引号或双引号表示。
转义序列:用于表示非打印字符。
\n :换行
\t :制表
\b : 退格
\r :回车
\f :进纸
\\ :斜杠
\' :d单引号
\" :双引号
\xnn :以十六进制代码nn表示的一个字符
\unnnn :以十六进制代码nnnn表示的一个Unicode字符
Object类型
它用于创建自定义对象。
7:操作符
(1):一元操作符
与C语言类似,(++和--),注意:A++为后置递增。
例:var A1=1;
var A2=A1--+1;//等于2
var A3=A1+1;//等于1
(2):位操作符
按位与( AND) a & b 对于每一个比特位,只有两个操作数相应的比特位都是1时,结果才为1,否则为0。
按位或(OR) a | b 对于每一个比特位,当两个操作数相应的比特位至少有一个1时,结果为1,否则为0。
按位异或(XOR) a ^ b 对于每一个比特位,当两个操作数相应的比特位有且只有一个1时,结果为1,否则为0。
按位非(NOT) ~ a 反转操作数的比特位,即0变成1,1变成0。
左移(Left shift)a << b 将a的二进制形式向左移b (< 32) 比特位,右边用0填充。
有符号右移 a >> b 将 a 的二进制表示向右移 b (< 32) 位,丢弃被移出的位。
无符号右移 a >>> b 将 a 的二进制表示向右移 b (< 32) 位,丢弃被移出的位,并使用 0 在左侧填充。
(3):布尔操作符
逻辑与由两个和号表示(&&),有两个操作做。如下图表示:var result=true&&false;
第一个操作数 第二个操作数 结果
True True True
True False False
False True False
False False False
由上表可以看出只有当第一个参数和第二个参数同时为true,逻辑与的结果为true
逻辑或由两个竖线符号组成(||),有两个操作数,如下图表示:var result = true||false;
第一个操作数 第二个操作数 结果
True True True
True False True
False True True
False False False
由上表看出,有个操作数的结果为true,逻辑或的结果为true。两个操作数都为false,结果为false
逻辑非(!)会将其操作数转换为布尔值,再求其反。
注:其余的加减乘除运算符,以及赋值运算符与C语言类似
(+,-,*,% ,==,===(全等), > , < , >= , <= , !=)
例:var A=("5"==5); //true
var A1=("5"===5); //false("5"不全等于5)
(4):逗号操作符
例:var A=(1,2,1,0); //A为0 【取最后的数值】
7:语句
语句通常使用一或多个关键字来完成给定任务,其中,常用的语句有if语句,for语句,while语句等。在此不多解释,在此,笔者列举笔者自己不熟悉的语句。
(1)for-in语句
这里介绍一下for-in语句,for-in 语句是一种精准的迭代语句,可以用来枚举对象的属性。例:
for (var propName in window) {
document.write(propName);
} ,
在这个例子中,我们使用 for-in 循环来显示了 BOM中 window 对象的所有属性。每次执行循环 时,都会将 window 对象中存在的一个属性名赋值给变量 propName。这个过程会一直持续到对象中的 所有属性都被枚举一遍为止。
(2)label语句
使用 label 语句可以在代、码中添加标签,标签可以在将来由 break 或 continue 语句引用。
(3)with语句
定义 with 语句的目的主要是为了简化多次编写同一个对象的工作,例如:
with(location){
var qs = search.substring(1);
var hostName = hostname;
var url = href;
}
这样就可以避免重复输入location了。
8:函数
函数对任何语言来说都是一个核心的概念。通过函数可以封装任意多条语句,而且可以在任何地方、 任何时候调用执行。。ECMAScript中的函数使用 function 关键字来声明,后跟一组参数以及函数体。 函数的大致形态是:
function functionName(arg0, arg1,...,argN)
{
statements
}
ECMAScript 中的函数在定义时不必指定是否返回值。实际上,任何函数在任何时候都可以通过 return 语句后跟要返回的值来实现返回值。