美文网首页
第三章:函数

第三章:函数

作者: a2ebcc3676c1 | 来源:发表于2017-05-24 11:47 被阅读4次

3.1 什么是函数

function sum(a,b) {
    var c = a + b;
    return c;
}

函数的组成:

  • 关键字 function

  • 函数名称,如:sum

  • 参数,如:a,b;

  • 函数体,大括号之间的代码;

  • return子句。函数通常有返回值,如果没有显示的返回值,会默认返回undefined

  • 参数:函数内部有个 arguments变量,他能返回函数接收的所有参数。

  • 预定义函数:

    • parseInt();
      • 将任何值转成数字,失败返回NaN
      • 传入字符串,会在遇到首个非数字的字符时停止
        • '123abc' > 123;
        • '1g34' > 1;
        • 'eg43' > NaN;
      • parseInt('FF',16),第二参数可选,代表基数(如十进制,十六进制)
    • parseFloat();
      • 可以接收指数形式 parseFloat('1e2'),结果为100.
    • isNaN(); 一般用来判断是否可以参与算数运算
    • isFinite(); 一般用来检测即非Infinity也非NaN的数字

3.3 变量的作用域

  • 变量以函数作为作用域
  • 如果我们声明一个变量时没有使用 Var语句,该变量会默认为全局变量。
变量提升
  • 函数内所有被声明的变量,声明部分会被提升到函数最开始的地方,赋值部分不变,如:
var a = 123;
function f() {
    alert(a);
    var a = 1;
    alert(a); // 1
}
f();
  • 上面函数调用的结果为,第一个alert()显示的是underfined,第二次显示的是1。
    • 如果函数内局部变量与全局变量同名,会覆盖全局变量
    • 局部变量声明的部分会提升
  • 上面的例子可以等价为:
var a = 123;
function f() {
    var a; // same as : var a = underfined;
    alert(a); // underfined
    a = 1;
    alert(a); // 1
}
函数也是数据
var f = function() {
    return 1;
}
匿名函数
var f = function(a) {
    return a;
}
  • 作为参数传递给其他函数;
  • 执行某些一次性任务;
回调函数
function add(a,b) {
    return a() + b();
}

add(
    function() {return 1;},
    function() {return 2;},
)
// 结果为3
  • 在不做命名的情况下传递函数;
  • 将一个函数调用操作委托给另一个函数;
  • 有助于提升性能;
即时函数
  • 在函数调用后加(),表示即时调用
闭包
  • 突破作用域链

3.7 练习题

1. 编写一个将十六进制值转换为颜色的函数,如:
> var a = gerRGB('#00FF00');
> a;
"rgb(0,255,0)"

代码如下

function getRGB(s) {
    var i=0,res="rgb(";
    for (i=0;i<3;i++) {
        var d = (i>1) ? ")" : ",";
        res += parseInt(s[i*2+1] + s[i*2+2],16) + d;
    }
    return res;
}

相关文章

网友评论

      本文标题:第三章:函数

      本文链接:https://www.haomeiwen.com/subject/sminxxtx.html