《javascript高级程序设计》读书笔记(二)javascript简介

第三章:基本概念

ECMAScript中有5种简单数据类型(也称基本数据类型):Undefined\Null\Boolean\Number\String,还有一种复杂数据类型——Object,Object本质上是由一组无序的名值对组成的。

typeof是一个操作符而不是函数.

Undefined类型:此类型只有一个值,即undefined.在使用var声明变量但未对其初始化时,这个变量的值就是undefined.

var message;

var message2 = undefined;

alert(message);                   //  ”undefined”

alert(message == undefined);       //  true

alert(typeof message);            //  ”undefined”

alert(message == undefined);       //  true

alert(age);                     //   产生错误

alert(typeof age);               //  ”undefined”

Null类型:此类型只有一个值,即null.表示一个空对象指针。

var car = null;

alert(typeof car);        //     ”object”

if(car != null){

//对car对象执行操作

}

undefined值是派生自null值的。

alert(null == undefined);      //true

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

Number类型:

八进制的第一位是0,十六进制的前两位是0x.

科学计数法:e

ECMAScript所能表示的最小和最大的值分别是:Number.MIN_VALUE与Number.MAX_VALUE,超出范围,会被成Infinity值(即Number.POSITIVE_INFINITY)或者-Infinity(即Number.NEGATIVE_INFINITY).

NaN(Not a Number)

1. 任何涉及到NaNde 操作都会返回NaN.

2. NaN与任何值都不相等,包括NaN本身。

alert( NaN == NaN );    //  false

IsNaN()在接受到一个值之后,会尝试将这个值转换为数值。

alert(isNaN(NaN));              //true

alert(isNaN(10));              //false

alert(isNaN(“10”));              //false

alert(isNaN(“blue”));              //true

alert(isNaN(true));              //false(可以被转换成1)

isNaN也适用于对象,会先调用对象的valueOf()方法,如果不能转换为数值,再基于返回值调用toString()方法。

数值转换:

可以将非数值转换成数值的函数:

1. Number()   用于任何数据类型,不解析八进制

var str ;

var str2 = null;

var str3 = “hello world”;

Number(str);        //NaN

Number(str2);       //0

Number(str3);       //NaN

Number(“”);        //0

Number(“000011”);  //11

Number(true);      //1

Number(“0xA”);     //10

一元加操作符的操作与Number()相同。

2. parseInt()  用于字符串类型(忽略前面的空格),可解析八进制

parseInt(“   1234blue”);         // 1234

parseInt(“”);                   // NaN

parseInt(“0xa”);                // 10

parseInt(22.5);                 //22

parseInt(“70”,8);               //56  (指定基数,即8进制)

parseInt(“10”,2);             // 2

3. parseFloat()  用于字符串类型(忽略前面的空格),只解析10进制

parseFloat(“1234blue”);                //1234

parseFloat(“0xA”);                    //0

parseFloat(“22.34.5”);                 //22.34

parseFloat(“0908.5”);                 //908.5

parseFloat(“3.125e7”);                //31250000

String类型:可以用双引号,也可以用单引号表示。

除了null与undefined值没有toString(),其他都有。但是null与undefined可以调用String(),返回相应的字符串。即null值返回“null”,undefined值返回“undefined”。

toString()可以传入基数参数,表示输出的进制表示,如:

var num = 10;

number.toString(2);   // “1010”

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

with语句:

with语句的作用是将代码的作用域设置到一个特定对象中。目的是简化多次编写同一个对象的工作。例子见···

但是大量使用with语句会导致性能下降,同时也会给调试代码造成困难,因此在开发大型应用程序时,不建议使用with语句。

switch语句:

switch语句在比较值时使用的是全等操作符,因此不会发生类型转换(例如,字符串“10”不等于数值10).

函数的返回值:

除了return语句外,没有任何声明表示该函数返回一个值。另外,return语句也可以不带任何返回值,此时,函数在停止执行后将返回undefined。

ECMAScript的函数参数:重点

命名的参数只提供便利,但不是必须的。解析器不会验证命名参数。

ECMAScript中的参数在内部是一个数组来表示的,可以通过arguments对象来访问这个参数数组,从而访问每一个参数。

修改arguments对象中的值会自动反映到对应的命名参数,但是修改命名参数不会改变arguments对应的值。没有传递值得命名参数将自动被赋予undefined值。

ECMAScript中的所有参数传递的都是值,不可能通过引用传递参数。

ECMAScript函数不能重载,能够重写。

时间: 2024-10-05 06:05:18

《javascript高级程序设计》读书笔记(二)javascript简介的相关文章

Javascript高级程序设计读书笔记(第六章)

第6章  面向对象的程序设计 6.2 创建对象 创建某个类的实例,必须使用new操作符调用构造函数会经历以下四个步骤: 创建一个新对象: 将构造函数的作用域赋给新对象: 执行构造函数中的代码: 返回新对象. 构造函数的问题:每个方法都要在每个实例上重新创建一遍: 理解原型对象: 无论何时,只要创建了一个新函数,就会根据一组特定的规则为该函数创建一个prototype属性,这个属性指向函数的原型对象.默认情况下,所有原型对象都会自动获得一个constructor属性,这个属性包含一个指向proto

JavaScript高级程序设计-读书笔记(6)

第20章 JSON JSON是一个轻量级的数据格式,可以简化表示复杂数据结构的工作量 JSON的语法可以表示一下三种类型的值 l        简单值:使用与JavaScript相同的语法,可以在JSON中表示字符串.数值.布尔值和null.但JSON不支持JavaScript中的特殊数值undefined. “Hello world!” l        对象(属性的值可以是简单值,也可以是复杂类型值,如下这样在对象嵌入对象) { “name” : ”Nicholas”, “age” : 29

JavaScript高级程序设计读书笔记之OOP

关于JavaScript创建对象的方式: 1.工厂模式 1 function createPerson(name, age, job){ 2 var o = new Object(); 3 o.name = name; 4 o.age = age; 5 o.job = job; 6 o.sayName = function(){ 7 alert(this.name); 8 }; 9 return o; 10 } 11 var person1 = createPerson("Nicholas&qu

JavaScript高级程序设计-读书笔记(4)

第11章 DOM扩展 1.选择符API Selector API Level 1 的核心是两个方法:querySelector()和querySelectorAll().在兼容的浏览器中,可以通过Document及Element类型的实例调用它们.目前完全支持Selector API Level 1的浏览器有IE 8+. Firefox 3.5+. Safari 3.1+. Chrome和Opera 10+. querySelector()方法接收一个CSS选择符,返回与该模式匹配的第一个元素,

JavaScript高级程序设计-读书笔记(3)

第8章 BOM 1.window对象 (1)全局作用域 BOM的核心对象是window,它表示浏览器的一个实例.在浏览器中,window对象既是通过JavaScript访问浏览器窗口的一个接口,又是ECMAScript规定的Global对象. 所有在全局作用域中声明的变量.函数都会变成window对象的属性和方法. (2)窗口关系及框架 如果界面中包含框架,这每个框架都拥有自己的window对象,并且保存在frames集合中,可以通过数值的索引(从0开始,从左至右,从上到下)或者框架名称来访问相

javascript高级程序设计读书笔记2

<!DOCTYPE HTML>//这个网页的文档类型,这个是html5的写法Bootstrap使用的某些HTML元素和CSS属性需要文档类型为HTML5 doctype.因此这一文档类型必须出现在项目的每个页面的开始部分 <html lang="en">//这里的lang="en"可以删除,如果不删除的,用谷歌之类打开,它会认为是英文的,会自动给翻译(如果设置了自动翻译的话) 有两个版本的 jQuery 可供下载:Production ver

Javascript高级程序设计读书笔记(第二章)

第二章  在HTML中使用Javascript 2.1<script>元素 延迟脚本(defer = "defer")表明脚本在执行时不会影响页面的构造,脚本会被延迟到整个页面都解析完毕后再运行.相当于告诉浏览器立即下载,但延迟执行.HTML5规定要求脚本按照它们出现的先后顺序执行. 异步脚本(async)如果有多个脚本文件,执行顺序不确定,指定async属性的目的是不让页面等待两个脚本下载和执行,从而异步加载页面其他内容. XHTML代码的规则比编写HTML严格得多,下面

精读《javascript高级程序设计》笔记二——变量、作用域、内存以及引用类型

变量.作用域和内存问题 执行环境共有两种类型——全局和局部 作用域链会加长,有两种情况:try-catch语句的catch块,with语句. javascript没有块级作用域,即在if,for循环中的变量,在块结束后,并不会被销毁. 最好能手工断开原生javascript对象与DOM元素之间的连接. Object类型 创建Object实例有两种方式:new 操作符后跟Object构造函数即new Object(),对象字面量表示法即用{}表示. 可使作方括号表示法来访问对象的属性,将要访问的属

JavaScript高级程序设计-读书笔记(2)

第6章 面向对象的程序设计 创建对象 1.最简单方式创建Object的实例,如 var person = new Object(); person.name = “Greg”; person.age = 27; person.job = ”Doctor”; person.sayName = function() { alert(this.name); }; person. sayName(): 缺点:会产生大量重复代码 2.工厂模式:用函数来封装以特定接口创建对象的细节,如 function c

javascript高级程序设计 读书笔记2

第五章 引用类型 对象是引用类型的实例,引用类型是一种数据结构,将数据和功能组织在一起.描述的是一类对象所具有的属性和方法.对象是某个特定引用类型的实例,新对象是使用new操作符后跟一个构造函数俩创建的,构造函数本身就是一个函数,只不过该函数试处于创建新对象的目的而定义的.  eg:    var person = new Object(); 1.创建Object实例的方式有两种   一:new+Object 二:对象字面量 var person = new Object(); var pers