<!DOCTYPE html>
<html>
<body>
<p>JavaScript 函数</p>
<script>
// 函数声明
function myFunction(a, b) { return a * b;}
console.log(myFunction(2, 6));
// 函数表达式(匿名函数)
var demo1 = function(a, b) {return a * b;};
console.log(demo1(2, 5));
// Function()构造函数 [F大写!]
var demo2 = new Function("a", "b", "return a * b");
console.log(demo2(2, 4));
// 自调用函数(匿名自我调用的函数) [添加两对括号!]
(function() {
console.log("Call myself.");
})(); // 函数是对象
// 使用 typeof 操作符判断函数类型将返回 "function"
console.log(typeof demo1 == 'function');
// toString() 方法将函数作为一个字符串返回
console.log(demo1.toString()); // Arguments对象
// [例1]获取最大值
function myMax() {
var i, max = arguments[0];
if(arguments.length < 2) return max;
for(i = 1; i < arguments.length; i++){
if(arguments[i] > max) max = arguments[i];
}
return max;
}
console.log(myMax(1, 3, 9, 5, 7));
// [例2]统计所有数值的和
function mySum() {
var i, sum = 0;
for(i = 0; i < arguments.length; i++) sum += (arguments[i] = arguments[i] || 0);
return sum;
}
var undef;
console.log(mySum(1, 3, 5, 7, 9, null, undef)); // 函数作为方法调用
var myObject = {
firstName: "Frank",
lastName: "Liu",
fullName: function() { return this.firstName + " " + this.lastName; }
}
console.log(myObject.fullName()); // 构造函数调用函数
function demo3(arg1, arg2) {
this.firstName = arg1;
this.lastName = arg2;
}
var demo4 = new demo3("Frank", "Liu");
console.log(demo4.firstName); // call()和apply()是预定义的函数方法。 两个方法可用于调用函数,两个方法的第一个参数必须是对象本身
// call则作为call的参数传入(从第二个参数开始)
var demo5 = myMax.call(demo5, 3, 1, 5 ,2);
console.log(demo5);
// apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入
var demo6 = myMax.apply(demo6, [3, 1, 6 ,2]);
console.log(demo6); // JavaScript闭包
// 函数的特别之处在于可以创建一个独立的作用域,最内层的函数使用了counter变量,所以counter不会被销毁
var add = (function() {
var counter = 0;
return function() { return counter += 1; };
})();
console.log("Loop1: " + add()); // 1
console.log("Loop2: " + add()); // 2
console.log("Loop3: " + add()); // 3
</script>
</body>
</html>

JavaScript(2):函数的更多相关文章

  1. JavaScript中函数函数的定义与变量的声明<基础知识一>

    1.JavaScript中函数的三种构造方式 a.function createFun(){ } b.var createFun=function (){ } c.var createFun=new ...

  2. 理解 JavaScript 回调函数并使用

    JavaScript中,函数是一等(first-class)对象:也就是说,函数是 Object 类型并且可以像其他一等对象(String,Array,Number等)一样使用.它们可以"保 ...

  3. 5种 JavaScript 调用函数的方法

    一次又一次的,我发现,那些有bug的Javascript代码是由于没有真正理解Javascript函数是如何工作而导致的(顺便说一下,许多那样的代码是我写的).JavaScript拥有函数式编程的特性 ...

  4. javascript escape()函数和unescape()函数

    javascript escape()函数和unescape()函数 escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串. 语法: escape(string) stri ...

  5. JavaScript调用函数的方法

    摘要:这篇文章详细的介绍了Javascript中各种函数调用的方法及其原理,对于理解JavaScript的函数有很大的帮助! 一次又一次的,我发现,那些有bug的Javascript代码是由于没有真正 ...

  6. Javascript常用方法函数收集(二)

    Javascript常用方法函数收集(二) 31.判断是否Touch屏幕 function isTouchScreen(){ return (('ontouchstart' in window) || ...

  7. javascript工具函数

    第一部分 JavaScript工具函数 转义特殊字符为html实体   HtmlEncode: function(str){ return str.replace(/&/g, '&') ...

  8. [转]javascript eval函数解析json数据时为什加上圆括号eval("("+data+")")

    javascript eval函数解析json数据时为什么 加上圆括号?为什么要 eval这里要添加 “("("+data+")");//”呢?   原因在于: ...

  9. javascript篇-----函数作用域,函数作用域链和声明提前

    在一些类似C语言的编程语言中,花括号内的每一段代码都具有各自的作用域,而且变量在声明它们的代码段之外是不可见的(也就是我们不能在代码段外直接访问代码段内声明的变量),我们称之为块级作用域,然而,不同于 ...

  10. JavaScript 常用函数总结

    javascript函数:  ·常规函数  ·数组函数  ·日期函数  ·数学函数  ·字符串函数 .cookie函数 1.常规函数 javascript常规函数包括以下9个函数:  (1)alert ...

随机推荐

  1. QTP(16)

    一.QTP项目(ECShop) 1.ECShop是一个开源免费的一个B2C的电子商务系统,主要用于商家和顾客进行商品交易操作. 2.ECShop分为前台和后台两个子系统: (1)ECShop前台:顾客 ...

  2. Array 对象-sort()

    Array 对象-sort() sort方法对数组成员进行排序,默认是按照字典顺序排序.排序后,原数组将被改变. sort方法不是按照大小排序,而是按照字典顺序.也就是说,数值会被先转成字符串,再按照 ...

  3. windows10家庭版远程桌面连接报错:CredSSP加密oracle修正

    转 原地址:https://www.cnblogs.com/lindajia/p/9021082.html Windows10远程桌面连接 报错信息 : 网上找到方法 但是奈何是 "Win1 ...

  4. 浅谈响应式Web设计与实现思路

    是否还在为你的应用程序适配PC端,移动端,平板而苦苦思索呢,是否在寻找如何一套代码适配多终端方式呢,是否希望快速上手实现你的跨终端应用程序呢,是的话,那就看过来吧,本文阐述响应式UI设计相关理论基础, ...

  5. 原来你是这样的 jsonp(原理与具体实现细节)

    前言 原文地址 仓库地址 jsonp(JSON with padding)你一定不会陌生,前端向后端拿数据的方式之一,也是处理跨域请求的得利助手. 我们早已习惯,早已熟练了jQ或者zepto的ajax ...

  6. HDU-3374-String Problem(最小表示法, KMP)

    链接: https://vjudge.net/problem/HDU-3374 题意: Give you a string with length N, you can generate N stri ...

  7. 1、Socket通信

    [TCP] 服务器端:无目标插座升级为有目标插座后,就可以通过有目标的插座收发数据 客户端: 实战:此案例有利于理解Socket的工作流程. 缺点:服务器只能接收1个客户端的连接,因为只写了一个Acc ...

  8. mysql的五大引擎跟优劣之分

    MySQL有多种存储引擎,每种存储引擎有各自的优缺点,可以择优选择使用: MERGE.MEMORY(HEAP).EXAMPLE.ARCHIVE.CSV. · MEMORY存储引擎提供“内存中”表.ME ...

  9. TensorFlow使用记录 (十二): ℓ1 and ℓ2 Regularization

    实现方式 以 ℓ2 Regularization 为例,主要有两种实现方式 1. 手动累加 with tf.name_scope('loss'): loss = tf.losses.softmax_c ...

  10. MySQL索引(二)B+树在磁盘中的存储

    MySQL索引(二)B+树在磁盘中的存储 回顾  上一篇文章<MySQL索引为什么要用B+树>讲了MySQL为什么选择用B+树来作为底层存储结构,提了两个知识点: B+树索引并不能直接找 ...