Object-Oriented JavaScript 笔记
Object-Oriented JavaScript笔记(一)
Object-Oriented JavaScript笔记(二)
Object-Oriented JavaScript笔记(三)
Object-Oriented JavaScript笔记(四)
Object-Oriented JavaScript笔记(五)
Object-Oriented JavaScript笔记(六)
Object-Oriented JavaScript笔记(七)
第三章 函数
JavaScript会给定义了但是没有传值的参数赋值为undefined,若是参数多于定义的,会被忽略。
没有函数都会带有一个名为arguments的类数组变量,包含所有传入的参数信息。
JavaScript内置函数(Pre-defined Functions):
parseInt()
parseFloat()
isNaN()
isFinite()
encodeURI()
decodeURI()
encodeURIComponent()
decodeURIComponent()
eval()
使用parseInt时最好每次都明确指定第二个(基数)参数,如 parseInt(‘FF’, 16)
parseFloat只接受一个参数,并能够识别指数表示法,如 parseFloat(‘123e2’)
escape() 与 unescape() 已经被弃用,不应该再被使用。
alert并不是JavaScript的一部分,并且它会阻塞浏览器线程,在富ajax应用中不应该使用它。
未使用var 声明的变量会被分配到全局作用域
>>> var f = function(){test = 2;};
>>> test
ReferenceError: test is not defined
>>> f();
>>> test
2
函数中声明的局部变量与全局变量同名会覆盖同名全局变量,即使是先使用后声明。
1 2 3 4 5 6 7 |
var a = 123; function f() { console.log(a); var a = 1; console.log(a); } f(); |
匿名函数
不仅是字符串,一些常量写在代码中也是可以的
1 |
"test"; [1,2,3]; undefined; null; 1; |
ECMAScript 5严格模式(Strict Mode)便是利用该特性
1 |
'use strict'; |
Lexical Scope 函数工作在定义时的作用域,而非执行作用域。它仅能访问自己的作用域和全局作用域。
>>> function f1(){var a = 1; f2();}
>>> function f2(){return a;}
>>> f1();
a is not defined
闭包Closure的常用场景
如:循环、get/set访问器、迭代器
-EOF-
Pingback: Object-Oriented JavaScript笔记(五) | 未完待续