函数声明和函数表达式

  在 JS 中定义函数的方式有两种:一种是函数声明,一种是函数表达式。

例如:

//函数声明
function fun() {
...
}
//函数表达式
var f = function() {
...
}

它们的区别在于 JS 会把函数声明提升到作用域顶部,而函数表达式只有在执行到该语句时才会生效

关于函数的其他注意事项:

1、函数名后面跟圆括号 "()" 表示立即执行该函数,例如:

  var test = fun(); //表示执行 "fun" 这个函数,并将返回值赋值给 "test" 变量

  var test = fun; //表示将 "fun" 函数的指针赋值给 "test" 变量,"test" 是该函数的一个引用

2、函数的 “arguments” 对象是一个参数数组,可以使用 “arguments” + 下标的方式访问传入函数中的参数

使用匿名自执行函数模拟块级作用域

  JS 中只有全局作用域和函数级作用域,并没有 C++ 那种花括号包裹起来的块级作用域,但是可以通过匿名自执行函数模拟块级作用域

例如:

(function() {
...
})();

以上代码定义并立即调用了一个匿名函数,将这个匿名函数包含在一对圆括号中是因为 "()" 这个运算符只对函数表达式有效,而 "function" 是 JS 中的一个关键字,位于句首表示函数声明,是不能被执行的。

高阶函数

  高阶函数是指至少满足下列条件之一的函数:

1、函数可以作为参数被传入

2、函数可以作为返回值输出

例如:

var isString = function(obj) {
return typeof(obj) == 'string';
}
var isNumber = function(obj) {
return typeof(obj) == 'number';

这两个用于判断数据类型的函数中的大部分代码都是可以重复利用的,如果以后还要扩展的话总是需要重新定义一个函数,而使用高阶函数就可以避免这些问题

例如:

function isType(type) {
return function(obj) {
return typeof(obj) == type;
}
}
var isString = isType('string');
var isNumber = isType('number');

JS基础:函数的更多相关文章

  1. JS基础——函数的创建和使用

    在JS中函数在使用时实质上和我们平时学习的编程语言中的函数类似,它相同也具有函数名,參数,返回值,函数体等这些寻常函数所具有的内容.可是作为一种脚本语言,它确实也有自己不一样的地方. 一.创建 < ...

  2. JS基础--函数与BOM、DOM操作、JS中的事件以及内置对象

       前   言 絮叨絮叨 这里是JS基础知识集中讲解的第三篇,也是最后一篇,三篇JS的基础,大多是知识的罗列,并没有涉及更难得东西,干货满满!看完这一篇后,相信许多正在像我一样正处于初级阶段的同学, ...

  3. JavaScript基础一(js基础函数与运算符)

    [使用js的三种方式] 1.在HTML标签中,直接内嵌js(并不提倡使用) <button onclick=" alert('点就点')"> 点我啊</butto ...

  4. js基础 -函数

    函数 定义 var a =function (){...}; 匿名函数方式定义function a(){} 直接定义 函数的参数arguments 可以接收任意个参数,是个像数组的内容,可for in ...

  5. js基础-函数基础

    js 先对函数进行解析 然后在执行函数 定义一个函数 实现求两个数的乘 function mult(a,b){ return a*b; } mult(1,3) 计算1 - n 的和 封装成函数 fun ...

  6. js基础-函数-var和let的区别

    javaScript简介 javaScript历史 1995年,Netscape公司是凭借Navigator浏览器成为当时第一代互联网公司. 网景公司希望在HTML界面上加一点动态效果,于是叫Bren ...

  7. JS基础函数

    函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块 <script> function demo(){ var a = 10; var b = 25; var sum = a + ...

  8. js 基础 函数传值

    让我忽略的函数传值问题 function box(num){ num += 10;  // num(有色的num) 实际就是arguments[0] ,如果参数没有num,则函数体的num(有色的nu ...

  9. js基础——函数

    1.函数声明:通过函数可封装任意多条语句,且可在任意地方.任何时候调用执行. eg. function box(){//无参函数      alert("只有函数被调用,我才会被执行&quo ...

  10. JS基础-全方面掌握继承

    前言 上篇文章详细解析了原型.原型链的相关知识点,这篇文章讲的是和原型链有密切关联的继承,它是前端基础中很重要的一个知识点,它对于代码复用来说非常有用,本篇将详细解析JS中的各种继承方式和优缺点进行, ...

随机推荐

  1. 二进制流BinaryFormatter存储读取数据的细节测试

    二进制流的使用很方便,为了更好的理解应用它,我创建简单对象开始测试它的增加特性和减少特性. [Serializable] class Data----------开始时候的存储对象 { public ...

  2. 2016/10/29 action与form表单的结合使用

    1>web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi= ...

  3. 员工管理系统(集合与IO流的结合使用 beta3.0 BufferedReader / ObjectOutputStream)

    Employee.java package cn.employee_io; public class Employee { private String empId; private String n ...

  4. iOS开发系列--通知与消息机制--转

    来自:http://www.cocoachina.com/ios/20150318/11364.html 概述 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户 ...

  5. [转]探索 Windows Azure Storage

    本文转自:https://msdn.microsoft.com/zh-tw/jj573842 概觀 儲存服務 (Storage services) 在 Windows Azure 運算模擬器中提供了可 ...

  6. 升级 Cocoapods 到1.2.0指定版本,降低版本及卸载

    =====================升级版本=================== CocoaPods 1.1.0+ is required to build SnapKit 3.0.0+. 在 ...

  7. SDK manager.exe 运行时报错:系统找不到指定的文件 android.bat

    android studio 2.3.1的 SDK Manager工具 突然没有 Launcher XXX 那个按钮,只好到SDK目录中去启动,无奈发生以下错误. 解决办法:运行android.bat ...

  8. IntelliJ IDEA导入JDK出现The selected directory is not a valid home for JDK问题的解决方法

    JDK版本与IDEA版本不兼容: JDK版本过高可能会造成这个问题,需与IDEA相兼容的JDK才行. 比如,用IDEA2016.3.8版本的,JDK用jdk-10.0.1_windows-x64_bi ...

  9. OC语言Block 续

    OC语言 Block 转载:http://blog.csdn.net/weidfyr/article/details/48138167 1.Block对象中的变量行为 结论: 在block代码块内部可 ...

  10. JPA createNativeQuery遇到的几个问题

    1.count方法返回值类型为java.math.BigInteger Query query = null; String sql = null; sql = "select count( ...