javascript讲义1基础语法部分Word文档下载推荐.docx
- 文档编号:20905310
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:16
- 大小:26.03KB
javascript讲义1基础语法部分Word文档下载推荐.docx
《javascript讲义1基础语法部分Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《javascript讲义1基础语法部分Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。
/script>
以上代码可以放在<
head>
标签之间,也可以放在<
body>
标签之间。
区别是:
●当页面载入时,会执行位于body部分的JavaScript。
●当被调用时,位于head部分的JavaScript才会被执行。
当脚本被调用时,或者当事件被触发时,脚本就会被执行。
当你把脚本放置到head部分后,就可以确保在需要使用脚本之前,它已经被载入了。
在页面载入时脚本就会被执行。
当你把脚本放置于body部分后,它就会生成页面的内容。
那些不支持JavaScript的浏览器会把脚本作为页面的内容来显示。
为了防止这种情况发生,我们可以使用这样的HTML注释标签:
!
--
//-->
2.3.2外部JS实现
有时,你也许希望在若干个页面中运行JavaScript,同时不在每个页面中写相同的脚本。
为了达到这个目的,你可以将JavaScript写入一个外部文件之中。
然后以.js为后缀保存这个文件。
注意:
外部文件不能包含<
script>
标签。
然后把.js文件指定给<
标签中的"
src"
属性,就可以使用这个外部文件了:
<
scriptsrc="
js/demojs002.js"
/head>
然后在js文件夹中创建demojs002.js文件,该文件内容如下:
alert("
通过外部JS文件实现"
同样的,<
标签可以放在<
之间。
2.2语句与注释
语句的结束不一定要使用分号“;
”,但是使用的话可以在同一行写多条语句,否则就必须换行写第二条语句。
通常建议使用分号,并且换行写第二条语句,以提高代码的可读性。
与Java语言一样,可以使用“{”和“}”构造块语句。
单行注释与Java相同。
多行注释只有“/**/”这一种格式。
2.3标识符、变量、常量
2.3.1标识符
标识符区分大小写。
命名规则参考Java变量命名规则就不会错了。
表1关键字全表
break
case
catch
continue
default
delete
do
else
finally
for
function
if
in
instanceof
new
return
switch
this
throw
try
typeof
var
void
while
with
表2保留字全表
abstract
boolean
byte
char
class
const
debugger
double
enum
export
extends
final
float
goto
implements
import
int
interface
long
native
package
private
protected
public
short
static
super
synchronized
throws
transient
volatile
2.3.2变量
变量无特定的类型,定义变量时只用var运算符,可以将它初始化为任意值。
例如:
varcolor="
red"
;
varnum=25;
varvisible=true;
还可以用一个var语句定义两个或多个变量:
vartest1="
hi"
test2="
hello"
不过用同一个var语句定义的变量不必具有相同的类型。
与Java不同,变量并不一定要初始化(它们是在幕后初始化的,将在后面讨论这一点)。
因此,下面这一行代码也是有效的:
vartest;
此外,与Java不同的还有变量可以存放不同类型的值。
这是弱类型变量的优势。
例如,可以把变量初始化为字符串类型的值,之后把它设置为数字值,如下所示:
vartest="
alert(test);
test=55;
另一个有趣的方面(也是与大多数程序设计语言的主要区别),是在使用变量之前不必声明。
varsTest="
hello"
sTest2=sTest+"
world"
alert(sTest2);
解释程序遇到未声明过的标识符时,用该变量名创建一个全局变量,并将其初始化为指定的值。
这是该语言的便利之处,不过如果不能紧密跟踪变量,这样做也很危险。
最好的习惯是像使用其他程序设计语言一样,总是声明所有变量。
2.3.3数据类型
分为原始值与引用值两类,对于Java中的基本数据类型和复合数据类型(即对象)。
原始值类型含Undefined、Null、Boolean、Number和String型这5种。
Javascript提供了typeof运算符来判断一个值是否在某种类型的范围内。
可以用这种运算符判断一个值是否表示一种原始类型:
如果它是原始类型,还可以判断它表示哪种原始类型。
varvar1;
//只声明不赋值的被认为是undefined类型
varvar2=97;
varvar3="
zifuchuan"
varvar4=false;
varvar5=null;
document.write("
var1is"
+typeofvar1+"
br/>
var2is"
+typeofvar2+"
var3is"
+typeofvar3+"
var4is"
+typeofvar4+"
var5is"
+typeofvar5+"
PS:
您也许会问,为什么typeof运算符对于null值会返回"
Object"
这实际上是JavaScript最初实现中的一个错误,然后被ECMAScript沿用了。
现在,null被认为是对象的占位符,从而解释了这一矛盾,但从技术上来说,它仍然是原始值。
●undefined类型
undefined并不同于未定义的值。
但是,typeof运算符并不真正区分这两种值。
考虑下面的代码:
varoTemp;
alert(typeofoTemp);
//输出"
undefined"
alert(typeofoTemp2);
前面的代码对两个变量输出的都是"
,即使只有变量oTemp2从未被声明过。
如果对oTemp2使用除typeof之外的其他运算符的话,会引起错误,因为其他运算符只能用于已声明的变量上。
例如,下面的代码将引发错误:
alert(oTemp2==undefined);
当函数无明确返回值时,返回的也是值"
,如下所示:
functiontestFunc(){
…
}
alert(testFunc()==undefined);
true"
●Null类型
另一种只有一个值的类型是Null,它只有一个专用值null,即它的字面量。
值undefined实际上是从值null派生来的,因此ECMAScript把它们定义为相等的。
alert(null==undefined);
尽管这两个值相等,但它们的含义不同。
undefined是声明了变量但未对其初始化时赋予该变量的值,null则用于表示尚未存在的对象。
如果函数或方法要返回的是对象,那么找不到该对象时,返回的通常是null。
●Boolean类型
它有两个值true和false。
●Number类型
ECMA-262中定义的最特殊的类型是Number类型。
这种类型既可以表示32位的整数,还可以表示64位的浮点数。
浮点数
要定义浮点值,必须包括小数点和小数点后的一位数字(例如,用1.0而不是1)。
这被看作浮点数字面量。
varfNum=5.0;
对于浮点字面量的有趣之处在于,用它进行计算前,真正存储的是字符串。
特殊的Number值
几个特殊值也被定义为Number类型。
前两个是Number.MAX_VALUE和Number.MIN_VALUE,它们定义了Number值集合的外边界。
所有ECMAScript数都必须在这两个值之间。
不过计算生成的数值结果可以不落在这两个值之间。
当计算生成的数大于Number.MAX_VALUE时,它将被赋予值Number.POSITIVE_INFINITY,意味着不再有数字值。
同样,生成的数值小于Number.MIN_VALUE的计算也会被赋予值Number.NEGATIVE_INFINITY,也意味着不再有数字值。
如果计算返回的是无穷大值,那么生成的结果不能再用于其他计算。
事实上,有专门的值表示无穷大,(如你猜到的)即Infinity。
Number.POSITIVE_INFINITY的值为Infinity。
Number.NEGATIVE_INFINITY的值为-Infinity。
由于无穷大数可以是正数也可以是负数,所以可用一个方法判断一个数是否是有穷的(而不是单独测试每个无穷数)。
可以对任何数调用isFinite()方法,以确保该数不是无穷大。
variResult=iNum*some_really_large_number;
if(isFinite(iResult)){
alert("
finite"
else{
infinite"
最后一个特殊值是NaN,表示非数(NotaNumber)。
NaN是个奇怪的特殊值。
一般说来,这种情况发生在类型(String、Boolean等)转换失败时。
例如,要把单词blue转换成数值就会失败,因为没有与之等价的数值。
与无穷大一样,NaN也不能用于算术计算。
NaN的另一个奇特之处在于,它与自身不相等,这意味着下面的代码将返回false:
alert(NaN==NaN);
false"
出于这个原因,不推荐使用NaN值本身。
函数isNaN()会做得相当好:
alert(isNaN("
blue"
));
666"
表3转义字符表
\n
换行
\t
制表符
\b
空格
\r
回车
\f
换页符
\\
反斜杠
\'
单引号
\"
双引号
\0nnn
八进制代码nnn表示的字符(n是0到7中的一个八进制数字)
\xnn
十六进制代码nn表示的字符(n是0到F中的一个十六进制数字)
\unnnn
十六进制代码nnnn表示的Unicode字符(n是0到F中的一个十六进制数字)
2.3.4数据类型转换
●转换成字符串
boolean值、数字和字符串都可以通过toString()转换成为字符串,注意,即使是字符串类型的数值也可以调用toString()。
如果是数字转字符串,无论是什么进制的数,转换后都是十进制数字的字符串。
variNum1=10;
variNum2=10.0;
alert(iNum1.toString());
10"
alert(iNum2.toString());
●转换成数字
ECMAScript提供了两种把非数字的原始值转换成数字的方法,即parseInt()和parseFloat()。
前者把值转换成整数,后者把值转换成浮点数。
只有对String类型调用这些方法,它们才能正确运行;
对其他类型返回的都是NaN。
在判断字符串是否是数字值前,parseInt()和parseFloat()都会仔细分析该字符串。
parseInt()方法首先查看位置0处的字符,判断它是否是个有效数字;
如果不是,该方法将返回NaN,不再继续执行其他操作。
但如果该字符是有效数字,该方法将查看位置1处的字符,进行同样的测试。
这一过程将持续到发现非有效数字的字符为止,此时parseInt()将把该字符之前的字符串转换成数字。
字符串中包含的数字字面量会被正确转换为数字,比如"
0xA"
会被正确转换为数字10。
不过,字符串"
22.5"
将被转换成22,因为对于整数来说,小数点是无效字符。
variNum1=parseInt("
12345red"
//返回12345
//返回10
56.9"
//返回56
//返回NaN
还有parseInt("
字符串"
"
进制"
)这种方法,可以确定转换后的数字是几进制的,例如:
如果十进制数包含前导0,那么最好采用基数10,这样才不会意外地得到八进制的值。
010"
//返回8
variNum2=parseInt("
8);
variNum3=parseInt("
10);
parseFloat()方法与parseInt()方法的处理方式相似,从位置0开始查看每个字符,直到找到第一个非有效的字符为止,然后把该字符之前的字符串转换成整数。
不过,对于这个方法来说,第一个出现的小数点是有效字符。
如果有两个小数点,第二个小数点将被看作无效的。
parseFloat()会把这个小数点之前的字符转换成数字。
这意味着字符串"
11.22.33"
将被解析成11.22。
使用parseFloat()方法的另一不同之处在于,字符串必须以十进制形式表示浮点数,而不是用八进制或十六进制。
该方法会忽略前导0,所以八进制数0102将被解析为102。
对于十六进制数0xA,该方法将返回NaN,因为在浮点数中,x不是有效字符。
varfNum1=parseFloat("
varfNum2=parseFloat("
varfNum3=parseFloat("
11.2"
//返回11.2
varfNum4=parseFloat("
//返回11.22
varfNum5=parseFloat("
0102"
//返回102
●强制类型转换
有3种强制类型转换如下:
•Boolean(value)-把给定的值转换成Boolean型;
•Number(value)-把给定的值转换成数字(可以是整数或浮点数);
•String(value)-把给定的值转换成字符串;
用这三个函数之一转换值,将创建一个新值,存放由原始值直接转换成新的值。
这会造成意想不到的后果。
弱类型语言时,强制类型转换非常有用,不过应该确保使用值的正确。
String()函数
这是最简单的,因为它可把任何值转换成字符串。
强制转换成字符串和调用toString()方法的唯一不同之处在于,对null和undefined值强制类型转换可以生成字符串而不引发错误:
vars1=String(null);
//"
null"
varoNull=null;
vars2=oNull.toString();
//会引发错误
Boolean()函数
当要转换的值是至少有一个字符的字符串、非0数字或对象时,Boolean()函数将返回true。
如果该值是空字符串、数字0、undefined或null,它将返回false。
可以用下面的代码测试Boolean型的强制类型转换:
varb1=Boolean("
//false-空字符串
varb2=Boolean("
//true-非空字符串
varb1=Boolean(50);
//true-非零数字
varb1=Boolean(null);
//false-null
varb1=Boolean(0);
//false-零
varb1=Boolean(newobject());
//true-对象
Number()函数
Number()函数的强制类型转换与parseInt()和parseFloat()方法的处理方式相似,只是它转换的是整个值,而不是部分值。
parseInt()和parseFloat()方法只转换第一个无效字符之前的字符串,因此"
1.2.3"
将分别被转换为"
1"
和"
1.2"
用Number()进行强制类型转换,"
将返回NaN,因为整个字符串值不能转换成数字。
如果字符串值能被完整地转换,Number()将判断是调用parseInt()方法还是parseFloat()方法。
代码
输出
Number(false)
Number(true)
1
Number(undefined)
NaN
Number(null)
Number("
)
1.2
12"
12
Number(newobject())
Number(50)
50
2.4运算符
由于Javascript是弱类型语言,在申明变量时使用var进行申明。
所以变量在进行各种运算前必须转换成为特定类型,否则会报错。
varvar1=8;
varvar2=”12”;
varvar3=var1*var2;
这样的结果就不是我们期望的“8*12”的结果。
所以Javascript提供了很多类型转换的函数。
对于有Java编程经验人可以考虑不记忆这些函数,而是是命名变量时在变量名前加特定的标记,表示特定的数据类型,这样更轻松。
类型
前缀
示例
数组
a
aValues
布尔型
b
bFound
浮点型(数字)
f
fValue
函数
fn
fnMethod
整型(数字)
i
iValue
对象
o
oType
正则表达式
re
rePattern
字符串
s
sValue
变型(可以是任何类型)
v
vValue
自增或自减运算规则及符号与Java相同。
(必须掌握)
位运算规则及符号,与Java相同。
(可选择性掌握)
与、或、非元算符号及规则,与Java相同。
+、-、*、/、%运算同Java。
+同样可用作字符串的连接。
、>
=、<
、<
=、==、!
=运算同Java。
(1)无论何时比较一个数字和一个字符串,ECMAScript都会把字符串转换成数字,然后按照数字顺序比较它们。
varbResult="
a"
<
3;
alert(bResult);
你能预料到这段代码输出什么吗?
字母"
不能转换成有意义的数字。
不过,如果对它调用parseInt()方法,返回的是NaN。
根据规则,任何包含NaN的关系运算符都要返回false,因此这段代码也输出false。
(2)执行类型转换的规则如下:
∙如果一个运算数是Boolean值,在检查相等性之前,把它转换成
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- javascript 讲义 基础 语法 部分
![提示](https://static.bdocx.com/images/bang_tan.gif)