- 函数执行细节:当函数为f(a[i])的时候,会返回number的数值,如果函数无意义f([i])的时候,会返回i的数值.当返回的不是数字f(f[i])的时候会显示NaN。
function map(f, a) {var result = []; // 创建一个数组var i; // 声明一个值,用来循环for (i = 0; i != a.length; i++)result[i] = f(a[i]);return result;}var f = function(x) {return x * x * x;}var numbers = [0,1, 2, 5,10];var cube = map(f,numbers);console.log(cube);//执行结果 0,1,8,125,1000function map(f, a) {var result = []; // 创建一个数组var i; // 声明一个值,用来循环for (i = 0; i != a.length; i++)result[i] = f([i]);return result;}var f = function(x) {return x * x * x;}var numbers = [0,1, 2, 5,10];var cube = map(f,numbers);console.log(cube);//执行结果 0,1,8,27,64function map(f, a) {var result = []; // 创建一个数组var i; // 声明一个值,用来循环for (i = 0; i != a.length; i++)result[i] = f(f[i]);return result;}var f = function(x) {return x * x * x;}var numbers = [0,1, 2, 5,10];var cube = map(f,numbers);console.log(cube);//执行结果 NaN,NaN,NaN,NaN,NaNfunction map(f, a) {var result = []; // 创建一个数组var i; // 声明一个值,用来循环for (i = 0; i != a.length; i++)result[i] = a(f[i]);return result;}var f = function(x) {return x * x * x;}var numbers = [0,1, 2, 5,10];var cube = map(f,numbers);console.log(cube);//执行结果 报错:a不是一个函数
- 函数指向并调用自身(调用自身叫递归)有三种方法:1 函数名。2 Argument.3 作用域下的一个指向该函数的变量名。 递归和循环类似:都执行重复代码,都需要一个终止条件(避免无限循环或者无限递归)。 递归转换为非递归可以使用函数堆栈
- JavaScript语言有好些个顶级的内建函数:
(1)eval()方法会对一串字符串形式的JavaScript代码字符求值。
(2)uneval()方法创建的一个Object的源代码的字符串表示。
(3)isFinite()函数判断传入的值是否是有限的数值。 如果需要的话,其参数首先被转换为一个数值。
(4)isNaN()函数判断一个值是否是NaN。注意:isNaN函数内部的强制转换规则十分有趣; 另一个可供选择的是ECMAScript 6 中定义Number.isNaN() , 或者使用 typeof来判断数值类型。
(5)parseFloat() 函数解析字符串参数,并返回一个浮点数。
(6)parseInt() 函数解析字符串参数,并返回指定的基数(基础数学中的数制)的整数。
(7)decodeURI() 函数对先前经过encodeURI函数或者其他类似方法编码过的字符串进行解码。
(8)decodeURIComponent()方法对先前经过encodeURIComponent函数或者其他类似方法编码过的字符串进行解码。
(9)encodeURI()方法通过用以一个,两个,三个或四个转义序列表示字符的UTF-8编码替换统一资源标识符(URI)的某些字符来进行编码(每个字符对应四个转义序列,这四个序列组了两个”替代“字符)。
(10)encodeURIComponent() 方法通过用以一个,两个,三个或四个转义序列表示字符的UTF-8编码替换统一资源标识符(URI)的每个字符来进行编码(每个字符对应四个转义序列,这四个序列组了两个”替代“字符)。
(11)已废弃的 escape() 方法计算生成一个新的字符串,其中的某些字符已被替换为十六进制转义序列。使用 encodeURI或者encodeURIComponent替代本方法。
(12)已废弃的 unescape() 方法计算生成一个新的字符串,其中的十六进制转义序列将被其表示的字符替换。上述的转义序列就像escape里介绍的一样。因为 unescape 已经废弃,建议使用decodeURI()或者decodeURIComponent 替代本方法。
- 闭包是 JavaScript 中最强大的特性之一。JavaScript 允许函数嵌套,并且内部函数可以访问定义在外部函数中的所有变量和函数,以及外部函数能访问的所有变量和函数。但是,外部函数却不能够访问定义在内部函数中的变量和函数。这给内部函数的变量提供了一定的安全性。此外,由于内部函数可以访问外部函数的作用域,因此当内部函数生存周期大于外部函数时,外部函数中定义的变量和函数将的生存周期比内部函数执行时间长。当内部函数以某一种方式被任何一个外部函数作用域访问时,一个闭包就产生了。
