您的位置:首页 > Web前端 > JavaScript

javascript 高级程序设计笔记(一)

2014-04-22 17:54 190 查看

今天开始看《javascript高级程序设计》,准备写点简单笔记,记录学习之路,因为刚入门,所以只是简单总结,同时也为了督促自己,相信以后有了更多的体会再来看这本书,又是不一样的感受。而我一直相信,罗马非一日建成。

day 01

chapter 2

1,在使用<script>嵌入Javascript代码时,不要在代码中任何地方出现"</script>"字符串,因为当浏览器遇到字符串"</script>"时,就会认为那是结束的</script>标签,而通过把这个字符串分隔为两部分可以解决这个问题,如下:

///

alert("\/script");

2,引入外部js文件时,使用src属性,<script type="text/javascript" src="xxx.js"></script>

与解析嵌入式javascript代码一样,在解析外部js文件时,页面的处理也会暂时停止,如果是在DHTML文档中,也可以省略前面实例代码中结束的</script>标签。例如:

<script type="text/javascript" src="xxx.js" />

但是,不能在HTML文档中使用这种语法,原因是不符合HTML规范,而且也得不到某些浏览器(尤其是IE)的正确解析。

3,按惯例,所有<script>元素都应该放在页面的<head>元素中,这样做是为了将所有外部文件(包括css文件和js文件)的引用都放在相同的地方,但这样就意味着必须等到全部js代码被下载、解析及执行完以后才能开始呈现页面的内容(浏览器遇到<body>标签时才开始呈现内容)。这样的话在遇到有多个js文件的页面时加载会出现明显延迟,延迟期间浏览器中将是一片空白,为了避免这种情况,一般把js放在<body>元素页面的内容后面,如下:

<html>
<head>
<title>
</title>
</head>
<body>
<!-- 这里放内容 -->
<script type="text/javascript" src="xxx.js"></script>
</body>
</html>
chapter 3

局部变量与全局变量

1,var message

如上,用var 关键字来定义一个变量,如果该声明放在函数当中,即为局部变量,一旦函数执行完毕退出,该变量将被销毁。

如下:

funciton test(){
var message = "hi";//局部变量
}
test();
alert(messsage);//报undefined
如果不用var关键字修饰,则默认为全局变量

funciton test(){
message = "hi";//全局变量
}
test();
alert(messsage);//hi
注:虽然省略var操作符可以定义全局变量,但是并不推荐,因为在局部作用域中定义的全局变量很难维护,给未经声明的变量赋值在严格模式下会导致抛出ReferenceError错误。

数据类型

1,一共有五种简单数据类型(基本数据类型)

Undefined、Null,Boolean、Number、String

一种复杂数据类型

Object

Undefined类型

1,Undefined类型只有一个值,即是特殊的undefined。使用var来声明但并未对其进行初始化时,其值为undefined。如下:

var message;
alert(message == undefined);//true
不过包含undefined值的变量与尚未定义的变量还是不一样的,如下:

var message;// 这个变量声明之后默认取得了undefined值
// a 并没有声明
// var a
alert(message);// undefined
alert(a);//产生错误
typeof 操作符

1,"undefined" ---值未定义或声明

"boolean" ---值是布尔值

"string" ---值是字符串

"number" ---值是数值

"object" ---值是对象或null (特殊值null会被认为是个空的对象引用)

"function" ---值是函数

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

var m;
alert(m == undefined); //true
alert(typeof(m)=="undefined");//true
alert(typeof(a)); //"undefined"
alert(typeof(a) == typeof(m)); //true
Null 类型

1,Null类型是第二个只有一个值得数据类型,即null

var car = null;
alert(typeof(car));//"object"
如果定义的变量准备用来保存对象,那么最好将该变量初始化为null而不是其他值,这样的话方便检查通过null值检查就可以知道是否已经保存了一个对象的引用。但undefined值实际上是派生自null值的,因此ECMA-262规定对它们的相等性测试要返回true:

alert(null == undefined); //true
虽然有这样的关系,但它们的用途完全不同。无论如何都没有必要将一个变量的值显式的设置为undefined,但同样的规则对null不适用。即只要意在保存对象的变量还没有真正保存对象,就应该明确的让该变量保存null值。这样做不仅可以体现null作为空指针的惯例,还能进一步区分null和undefined。

NaN (not a number)

1,NaN本身有2个特点:

一、任何涉及NaN的操作(如NaN/0)都会返回NaN

二、NaN与任何值都不相等,包括自己,如下:

alert(NaN == NaN); //false

针对以上特性,定义了isNaN()函数,该函数接受一个任何类型的参数,可以用来判断该参数是否“不是数值”.isNaN()也适用于对象。基于对象调用isNaN()时,首先会调用该对象的valueOf()方法,然后确定该方法的返回值是否能转化为数值,如果可以就返回false,否则就再基于这个返回值再调用toString()方法,再测试返回值。

数值转换

以下三个函数可以将非数值转换为数值:

Number() parseInt() parseFloat()

第一个可以用于任何数据类型,第二第三个则专门用于字符串转换成数值。

Number()

1,如果是Boolean值,true和false分别转换为1和0

2,数字的话简单返回和传入

3,null值,返回0

4,undefined,返回NaN

5,字符串

a,字符串只包含数字,转换成十进制数值

b,包含有效浮点格式,转换对应浮点数值

c,包含有效十六进制,转换为大小相同的十进制整数值

d,字符串为空(不包含任何数值),转换为0

e,包含除上述以外的字符,转换为NaN

f,对象的话,则调用对象的valueOf()方法,再依照前面的规则转换为大小相同的十进制数值;如果

转换的为NaN,则调用对象的toString(),然后再按照之前的规则进行转换。

一元加操作符的操作和Number()函数相同。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: