2011年8月3日星期三

笔记:JavaScript 权威指南

chapter 1 - 10

变量没有块级作用域,在函数中任意位置定义的变量,在整个函数体都可用

函数使用变量时,先从局部作用域开始找,然后才是全局作用域

typeof(null) 返回的是object,而不是undefined

void舍弃运算数的值,返回undefined

抛出异常 if(x<0) throw new Error(“x must not be negative”); 后javascript解释器会跳转到最近的异常处理器(一直往上找,如果没找到就作为错误处理)

try/catch/finally块,finally一定会执行,就算try中间要跳走,也要等finally执行了再说

object.property 这个属性名是标识符,静态对象硬编码,比较像C++中的静态对象

object[“property”] 这个属性名是字符串值,可以动态指定,相当于关联数组

slice函数返回指定数组的一个片段,splice函数用于插入或删除数组元素

search函数返回第一个匹配的位置

replace函数是正则替换

match函数是正则匹配

exec函数是每次调用执行一次匹配尝试,index往前走

test是尝试匹配一次,返回true/false


chapter 11

function定义的函数使用词法作用域
   
var x = “global”;

function f() {

var x = “local”;

function g() { alert(x); }

g();

}

f();  //打印出local

Function() 创建的函数不使用词法作用域,而是当作顶级作用域编译
   
var y = “global”;

function constructFunction() {

var y = “local”;

return new Function(“return y”);

}

alert(constructFunction()());  //打出global


chapter 12

html解析器遇到script时,必须停止解析文档,等待script执行。如果script指定defer属性,表示这块script不生成任何文档输出,浏览器可以继续解析html文档,推迟执行script

脚本执行过程是浏览器进行HTML解析的一部分,如果一个脚本在<head>出现,那么该文档的<body>就还没有被定义,也就是说文档主体还没有被创建,脚本不能对它作操作

onload是当文档或框架被完全装载时调用的,onunload是在刚要卸载页面之前执行的(浏览器要显示新页面了)

reload()重新载入当前页面,replace()替换当前页面(history会失效)

如果一个frame设置了name,例如<frame name=”test_frame” src=”test.html”>,则兄弟框架可以用parent.test_frame引用之

document.write()动态生成文档

cookie的secure属性为真时,表示只有在https和安全协议连在一起时被传输

没有评论:

发表评论