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 闭包 (??)

Basic knowledge of javaScript (keep for myself)的更多相关文章

  1. Review: Basic Knowledge about JavaScript 1

    JavaScript shanzm

  2. NLP related basic knowledge with deep learning methods

    NLP related basic knowledge with deep learning methods  2017-06-22   First things first >>> ...

  3. Python基础知识(Basic knowledge)

    Python基础知识(Basic knowledge) 1.认识Python&基础环境搭建 2.Python基础(上) 3.Python基础(中) 4.Python基础(下) 5.Python ...

  4. [SLAM] 01 "Simultaneous Localization and Mapping" basic knowledge

    发信人: leecty (Terry), 信区: ParttimeJobPost标 题: 创业公司招SLAM 算法工程师发信站: 水木社区 (Thu Jun 16 19:18:24 2016), 站内 ...

  5. Basic knowledge of html (keep for myself)

    1. 通常标签 <strong> 替换加粗标签 <b> 来使用, <em> 替换 <i>标签使用. 2. 在 <head>元素中你可以插入脚 ...

  6. 计算机基础知识 一 Basic knowledge of computers One

    计算机硬件由CPU(Central Processing Unit).存储器.输入设备.输出设备组成. CPU通常由控制单元(控制器)和算数逻辑单元(运算器)组成. 运算器:负责进行算数运算和逻辑运算 ...

  7. Android Studio accelerator key(shortcut)& Basic knowledge

    shift + F6 重构(选文件,ok->下面的控制台,do refactor option + return 快速修复 Activity@Extra() Intent: @FragmentA ...

  8. NoSql basic knowledge

    The big picture to keep in mind first is: There are lots of articles and resources out there: http:/ ...

  9. [Tango] Basic Knowledge

    Project Tango类设备能够给开发者在哪些领域带来机会. 室内导航*:室内GPS信号的缺失,使得Project Tango设备会成为室内导航重要应用场景之一.有了它,你就不会在不熟悉的室内商场 ...

随机推荐

  1. mac虚拟机parallels 无法启动 "Windows 7" 虚拟机

    关机前在虚拟机上安装了个游戏有点大,第二天开机就使用不了虚拟机了: 提示:mac虚拟机parallels  无法启动 "Windows 7" 虚拟机.  释放至少 241 MB 的 ...

  2. 《安全参考》HACKCTO-201312-12

    小编的话 “忽如一夜春风来,千树万树梨花开.” 小伙伴们,不要只为了“千树万树的梨花”而惊喜,陶醉! 与此同时,您最爱的整合型信息安全技术期刊<安全参考>第12期也如约而至啦! 这一期&l ...

  3. 通过JAVA代码获取手机的一些基本信息(本机号码,SDK版本,系统版本,手机型号)

    代码如下: package com.zzw.getPhoneInfos; import android.app.Activity; import android.content.Context; im ...

  4. How to display SSRS report based on customer/Vendor specific language [AX2012]

    Common requirement is to show the reports in customer’s language. [example : Quotations, sales confi ...

  5. Java 为什么使用抽象类和接口

    Java接口和Java抽象类代表的就是抽象类型,就是我们需要提出的抽象层的具体表现.OOP面向对象的编程,如果要提高程序的复用率,增加程序的可维护性,可扩展性,就必须是面向接口的编程,面向抽象的编程, ...

  6. nginx 配置 ThinkPHP Rewrite

    server { listen 80; server_name www.funsion.com; root /www/web/funsion; index index.php; location / ...

  7. netfilter

    http://jingyan.baidu.com/article/642c9d3415d2c9644a46f7c6.html http://blog.csdn.net/zhangskd/article ...

  8. xcode 产生指定颜色的图片imageWithColor

    是在万能的stackOverflow上找到的答案,留下了, 原地址:http://stackoverflow.com/questions/6496441/creating-a-uiimage-from ...

  9. AutoCAD/Civil 3D 学习笔记

    Civil学习笔记 1.环境配置 1.添加引用: Civil二次开发需要5个基本的AutoCAD的dll引用-acdbmgd.dll, acmgd.dll, accoremgd.dll, AecBas ...

  10. R语言实战读书笔记1—语言介绍

    第一章 语言介绍 1.1 典型的数据分析步骤 1.2 获取帮助 help.start() help("which") help.search("which") ...