zoukankan      html  css  js  c++  java
  • Basic knowledge of javaScript (keep for myself)

    1. 函数表达式

    JavaScript 函数可以通过一个表达式定义。eg. var x = function (a, b) {return a * b};

    so: var x = function (a, b) {return a * b};
      var z = x(4, 3);

    以上函数实际上是一个 匿名函数 (函数没有名称)。

    函数存储在变量中,不需要函数名称,通常通过变量名来调用。

    2. 在 JavaScript 中,很多时候,你需要避免使用 new 关键字。

    3. 函数提升(Hoisting): 实际上是指扩展作用域。定义可在使用之后

    4. 自调用函数: 实际上是匿名自我调用的函数

    eg. 

    <script>
    (function () {
    document.getElementById("demo").innerHTML = "Hello! 我是自己调用的";
    })();
    </script>

    5. 函数是对象:

    在 JavaScript 中使用 typeof 操作符判断函数类型将返回 "function" 。

    但,JavaScript 函数描述为一个对象更加准确。

    6. JavaScript 函数有个内置的对象: arguments 对象.它包含了函数调用的参数数组。

    7. 值传递参数:不会修改参数初始值;对象传递参数:类似引用,可作用于函数外部。

    8. JavaScript中的函数调用还是有点儿说道的:分4种方法进行调用

         (1) 作为一个函数直接调用

    eg.

    function myFunction(a, b) {
        return a * b;
    }
    myFunction(10, 2);           // myFunction(10, 2) 返回 20

    此时类似于:

    function myFunction(a, b) {
        return a * b;
    }
    window.myFunction(10, 2);    // window.myFunction(10, 2) 返回 20

    原因:以上函数并未指定对象,但属于整个HTML页面,所以说属于全局对象,即属于浏览器中的window对象。

      虽然这种函数调用的方式比较常用,但并不是好的编程习惯,会容易造成命名冲突。

      当函数没有被自身的对象调用时, this 的值就会变成全局对象。

      (2)将函数作为对象中的方法调用(类似java中的对象)

    eg.

    var myObject = {
        firstName:"John",
        lastName: "Doe",
        fullName: function () {
            return this.firstName + " " + this.lastName;
        }
    }
    myObject.fullName();         // 返回 "John Doe"

    此时,实例中 this 的值为 myObject 对象。

      (3)使用构造函数调用函数

    如果函数调用前使用了 new 关键字, 则是调用了构造函数。

    构造函数的调用会创建一个新的对象。新对象会继承构造函数的属性和方法。

      (4)利用apply()和call()方法调用函数

    理由:在JavaScript中,函数也是对象,也拥有属性和方法。也就是说,可以利用函数对象中的apply()方法或者call()方法调用函数对象。

    eg.

    function myFunction(a, b) {
        return a * b;
    }
    myFunction.call(myObject, 10, 2);      // 返回 20

    myArray = [10,2];
    myFunction.apply(myObject, myArray);   // 返回 20

    在 JavaScript 严格模式(strict mode)下, 在调用函数时第一个参数会成为 this 的值, 即使该参数不是一个对象。

    在 JavaScript 非严格模式(non-strict mode)下, 如果第一个参数的值是 null 或 undefined, 它将使用全局对象替代。

    9. 在JavaScript中,若变量在声明时没有var关键字,则为全局变量

    10. JavaScript 闭包 (??)

     

    清醒时做事,糊涂时读书,大怒时睡觉,独处时思考; 做一个幸福的人,读书,旅行,努力工作,关心身体和心情,成为最好的自己 -- 共勉
  • 相关阅读:
    vector详解
    笔记
    积木大赛
    codevs 1086 栈(Catalan数)
    不要把球传我
    同余方程 (codevs1200)
    最小集合
    数的计算
    产生数
    逃跑的拉尔夫
  • 原文地址:https://www.cnblogs.com/hello-yz/p/4439521.html
Copyright © 2011-2022 走看看