js003-基本概念
js003-基本概念
3.1 语法
3.1.1 区分大小写 ECMAScript中的一切(变量、函数名和操作符)都是区分大小写的,并且不能用关键字作为函数名:如 typeof。 |
|||
3.1.2 标识符 所谓标识符就是变量、函数、属性的名字、或者函数的参数,标识符符合以下规格:
|
|||
3.1.3 注释 //单行注释 /* 块级注释 */ |
|||
3.1.4 严格模式 要在整个脚本中启用严格模式 可以在顶部添加代码 "use strict"; 如:function dosomething(){"use strict"; //函数体 } |
|||
3.1.5 语句 ECMAScript以一个分号结尾 |
3.2关键字和保留字
ECMA-262描述了具有特定用途的关键字,这些关键字可用于表示控制语句的开始或结束,或者用于执行特定操作等。关键字也是语言保留的,不能用于标识符
3.3 变量
ECMScript的变量是松散类型的。松散类型:就是可以用来班次你任何类型的数据。定义变量:
var message;
该行代码定义了一个名为message的变量,该变量可以保存任何值,未初始化的保存一个特殊值---undefined
初始化一个变量
var message = "hi"; |
修改变量值的同时修改类型
var message = "hi"; message = 100; //有效,但是不推荐 |
局部变量和全局变量
局部变量 |
全局变量 |
function test(){ var message = "hi"; //局部变量 } test(); alert(message); //错误 |
function test(){ message = "hi"; //全局变量 } test(); alert(message); //"hi" |
变量message是在函数中使用var定义的,当函数被调用时,就会创建该变量并为其赋值,而此后就会立即被销毁,在下面的代码中就不能使用,所以会出现错误。 |
省略var 。 message就成了全局变量。这样只要调用过一次test()函数,这个变量就有了定义,可以在函数外部的任何地方被访问到。。但是不推荐这样做,因为难以维护,给未声明的变量赋值在严格模式下会导致抛出referenceerror的错误 |
可以使用一条语句定义多个变量,如下,用逗号(,)隔开
var message = "hi", found = "false", age = 20; |
定义了3个变量,因为ECMAScript是松散型的,所以不同类型的变量可以用一条语句来完成
|
3.4 数据类型
3.4.1 typeof操作符
鉴于ECMAScript是松散型的,因此需要一种手段来检测给定变量的数据类型---typeof。对一个值使用typeof操作符可能返回夏磊某个字符串
undifine |
该值未定义 |
boolean |
是布尔值 |
string |
是字符串 |
number |
数值 |
object |
这个值是对象或者null |
function |
这个值是函数 |
例子:
var message = "some thing"; |
输出 |
alert(typeof(message)); |
"string" |
alert(typeof(message)); |
"string" |
alert(typeof 99); |
"number" |
这几个例子说明typeof操作符的操作数可以是变量也可以是数字。Typeof是一个操作符不是一个函数,所以后面的括号()是可有可无的。
3.4.2 undefined类型
该类型只有一个值,即特殊的undefined。变量在用var声明后,要是没有对其进行初始化,它的默认值就为undefined。
例如
var message ; alert(message == undefined) ; |
返回true
|
包含undefined值和未定义的变量是不一样的
var message ; //下面这个变量生命后默认取得了undefined值 //var age = 20; //该变量没有声明 alert(message); //undefind alert(age); //产生错误 |
3.4.3 null类型
Null类型是第二个只有一个值的数据类型,这个特殊的值是null。从逻辑角度看,null值表示一个空对象指针,所以typeof操作符检测null值时会返回object
var car = null; alert(typeof car); //object |
返回object
|
3.4.4 boolean类型
var found = true; |
var lost = false; |
数据类型 |
转换为true的值 |
转换为false的值 |
Boolean |
true |
false |
string |
任何非空字符串 |
“”(空字符串) |
number |
任何非0数字值(包括无穷大) |
0和nan |
object |
任何对象 |
null |
undefined |
n/a |
undefined |
3.4.5 number类型
JScript 支持整数和浮点数。整数可以为正数、0 或者负数;浮点数可以包含小数点、也可以包含一个 "e"(大小写均可,在科学记数法中表示“10的幂”)、或者同时包含这两项。这些数遵循数值表示的 IEEE 754 标准。最后,还有一些特殊的数值:
- NaN,即不是一个数
- 正无穷
- 负无穷
- 正数 0
- 负数 0
整数可以以 10 (十进制)、8 (八进制)和 16 (十六进制)作为基数来表示。
八进制整数用一个前导 "0" 指明,并可以包含从 0 到 7 的数字。如果某个数字有一个前导 "0" 但是又包含数字 "8"和/或 "9",则该数字是一个十进制数。如果一个应该为八进制的数中包含了字母 "e" (或 "E") 将会产生一个错误。
十六进制("hex") 整数用前导 "0x" 指明(其中的 "X" 大小写均可),并且可以包含从 0 到 9 的数字以及从 A 到 F 的字符(字母的大小写均可)。字母 "e" 在十六进制记数法中是一个允许的数字,但并不是表示这是一个指数。字母 A 到 F 是作为单个的数字,用来表示以 10 为基数的 10 到 15 这些数。也就是说,0xF 等于 15,而 0x10 就等于 16。
八进制数和十六进制数可以是负数,但不能是小数。一个以单个 "0" 开头并包含一个小数点的数是一个十进制的浮点数;如果一个数以 "0x" 或 "00"开头并包含一个小数点,则该小数点右边的任何数都将被忽略。
一些示例:
.0001, 0.0001, 1e-4, 1.0e-4 // 四个浮点数,它们互等。
3.45e2 // 一个浮点数,等于 345。
42 // 一个整数。
0377 // 一个八进制整数,等于255。
00.0001 // 由于八进制数不能有小数部分,因此这个数等于 0。
0378 // 一个整数,等于 378。
0Xff // 一个十六进制整数,等于 255。
0x37CF // 一个十六进制整数,等于 14287。
0x3e7 // 一个十六进制整数,等于 999。
0x3.45e2 // 由于十六进制数不能有小数部分,因此这个数等于 3。
3.4.6 String类型
String类型包含一些特殊的字符字面量,页脚转义序列。用于表示非打印字符或者具有其他用途的字符。这些字符字面量如下表所示:
字面量 |
含义 |
\n |
换行 |
\t |
制表 |
\b |
退格 |
\r |
回车 |
\f |
进纸 |
\\ |
斜杠 |
\' (单引号) |
单引号 |
\" (双引号) |
双引号 |
\xnn |
以16进制代码nn表示的一个字符(其中n为0~F) |
\unnn |
以16进制代码nnnn表示的一个Unicode字符(其中n为0~F) |
字符串特点:字符串一单创建,他们的值就不能改变
转换为字符串:要把一个值转换为一个字符串有两种方式。
tostring()方法 (调用tostring()方法不必传递参数) |
var age = 11; var ageAsString = age.tostring(); |
传递参数的tostring() |
var num = 10; alert(num.tostring()); //"10" alert(num.tostring(2)); //"1010" alert(num.tostring(8)); //"12" alert(num.tostring(10)); //"10" alert(num.tostring(16)); //"a" |
3.4.7 object类型
var o = new object();
每个实例都具有下列属性和方法。
constructor |
保存着用于创建当前对象的函数 |
hasOwnproPerty(propertyName) |
用于检查给定的属性在当前对象实例中(不是在实例原型中)是否存在 |
isPrototypeOf(object) |
用于检查传入的对象是否传入对象原型 |
propertyIsEnumerable(propertyName) |
检查给定的属性能否用for-in语句来枚举 |
toLocaleString() |
返回对象的字符串表示,该字符串与执行环境的地区对应。 |
toString() |
返回对象的字符串表示 |
valueOf() |
返回对象的字符串、数值或布尔值表示,通常与tostring()返回的值一样 |
3.5 操作符
包括算术操作符(如加减号)、位操作符、关系操作符和相等操作符。ECMAScript操作符雨中不同之处在于:它能够适用于很多值,例如字符串、数字值、布尔值、对象
3.5.1 一元操作符
只能操作一个数值的操作符叫做一元操作符,这是ECMAScript中最简单的操作符
递增操作符 |
递减操作符 |
var age = 11; ++age; |
var age = 11; --age; |
使用前置递增或者递减操作符,变量的值是在语句被求值以前改变的。
3.5.2 位操作符
按位非(NOT) |
~ |
按位与(AND) |
& |
按位或(OR) |
| |
按位异或(XOR) |
^ |
左移 |
<< |
有符号右移 |
>> |
无符号右移 |
>>> |
3.5.3布尔操作符
逻辑非 |
! |
逻辑与 |
&& |
逻辑或 |
|| |
3.5.4 乘性操作符
乘法 |
* |
除法 |
/ |
求模 |
% |
3.5.5 加性操作符
加法 |
+ |
减法 |
- |
3.5.6 关系操作符 (大写字母的布尔值小于小写字母的布尔值)
大于 |
> |
小于 |
< |
大于等于 |
>= |
小于等于 |
<= |
3.5.7 相等操作符
相等和不相等 |
== |
!= |
全等和不全等 |
=== |
!== |
3.5.8 条件操作符
Variable = boolean_expression ? true_value : false_value;
3.5.9 逗号操作符
var num1 = 1, num2 = 2, num3 = 3; 逗号可以用于生命多个变量,逗号还可以用于赋值:var num = (2,6,5,3,8,4,9); //num值为9,因为最后一个值为9
3.5.10 赋值操作符
乘/赋值 |
*= |
除/赋值 |
/= |
模/赋值 |
= |
加/赋值 |
+= |
减/赋值 |
-= |
左移/赋值 |
<<= |
有符号右移/赋值 |
>>= |
无符号右移/赋值 |
>>>= |
3.6 语句
3.6.1 if语句
if (a < b) { alert("A is less than B"); }else if (a > b) { alert("A is greater than B"); }else{ alert("A is equal to B"); } |
3.6.2 do-while语句
do{ statement }while(expression) |
3.6.3 while语句
while(i<0){ i++; } |
3.6.4 for语句
for (var i = thing.length - 1; i >= 0; i--) { alert[i] }; |
3.6.5 for-in语句
for(var propName in window){ document.write(propName); } |
3.6.6 label语句
start : for(var i = 0;i <= count; i++){ alert(i); } |
3.6.7 break和continue语句
var num = 0; for (var i = 1; i <= 0; i++) { if(i%5 == 0){ break; } num++; } alert(num) //4 |
var num = 0; for (var i = 1; i <= 0; i++) { if(i%5 == 0){ coutinue; } num++; } alert(num) //8
|
3.6.8 with语句
with语句的作用干事将大妈的作用域设置到一个特定的对象中。语法如下:
with (expression) statement
定义with 语句额目的主要是为了简化多次编写同一个对象的工作,如下面的例子:
var qs = location.search.substring(1); var hostName = location.hostName; var url = href; |
以上几行代码都包含location对象,如果使用with语句,就可以吧上面代码编写成如下所示:
with(location){ var qs = search.substring(1); var hostName = hostName; var url = href; } |
3.6.9 switch语句
语法 |
例子 |
switch(expression){ case value : statement break; case value : statement break; case value : statement break; case value : statement break; default : statement } |
switch(expression){ case 20 : alert(20) break; case 18 : alert(18) break; case 16 : alert(16) break; case 14 : alert(14) break; default : alert("other") } |
3.7 函数
函数的基本语法如下所示
function functionName(arg0, arg1, arg2,..., argN){
statement:
}
函数示例:
function sayhi(name, message){ alert("hello" + name +"," message); } |
严格模式对函数有一些限制:
不能把函数命名为eval或argument;
不能把参数命名为eval或argument;
不能出现两个命名参数同名的情况。
3.7.1 理解参数
3.7.2 没有重载
3.8 小结
版权声明:未经作者同意,不得私自转载。http://www.cnblogs.com/lal-fighting/