`
编程足球
  • 浏览: 251669 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

javascript核心 -- function

 
阅读更多
1. 调用
1.1 函数调用
function f(){
     // TODO xxxx   
}

f();// 函数调用


1.2方法调用
var obj = {
    m:function(){
       // TODO xxxx   
    }
}


obj.m();


区别:
函数调用在ECMAScript3和非严格下的ECMAScript5调用的上下文是(this)全局对象,但是在严格模式下调用的上下文是undefined

方法调用上下文 this指向本身

eg

var obj = {
    m:function(){
        var self = this;
        console.log(this === obj); // true
    
        f();
        
        function f(){
            console.log(this === obj);  //false;
            console.log(this);       // this 为undefined 或者为全局上下文对象
            console.log(self === obj); // true
            
        }
        
        return this;
    }
}

obj.m();


2. 传递参数
2.1 少传递   --> 变成undefined
function f(a,b,c){

    console.log(a); // a = 1
    console.log(b); // b = 2
    console.log(c); // c = undefined

}

f(1,2);


2.2 多传递  --> 通过 arguments来获取
function f(a){
    console.log(a);  // 1
    console.log(arguments.length); //2
    console.log(arguments[0]);  //1 == a
    console.log(arguments[1]);  //2 == 第二个参数
    console.log(arguments[2]);  //undefined
}

f(1,2);

 

注: arguments 并不是数组,只是碰巧用数字做索引,以及一个length属性


2.3. arguments的两个属性callee 与 caller

在非严格模式下,callee 指:当前正在执行的函数
caller 指:调用当前正在执行的函数的函数
var f = function(x){
    if(x <=1){
        return 1;
    }
    return x*arguments.callee(x-1);
}
f(5);  // 进行递归调用 120


3. 做值的函数
function square(x){
    return x*x;
}
var s = square;
square(4);//16
s(5); //25

/** 
* a[0]: 是一个function
* a[1]: 20
*/
var a = [function square(x){return x*x;},20];
a[0](a[1]); //400

//操作数,function作为参数传递
function add(x,y){
    return x+y;
}
function operate(operator,operand1,operand2){
    return operator(operand1,operand2);
}

operate(add,1,2);
分享到:
评论

相关推荐

    JavaScript权威指南第五版【新】(犀牛书)

    It documents every class, object, constructor, method, function, property, and constant defined by JavaScript 1.5 and ECMAScript version 3. Part IV is a reference for client-side JavaScript, ...

    深入理解JavaScript系列

    深入理解JavaScript系列(10):JavaScript核心(晋级高手必读篇) 深入理解JavaScript系列(11):执行上下文(Execution Contexts) 深入理解JavaScript系列(12):变量对象(Variable Object) 深入理解...

    深入理解JavaScript系列(.chm)

    深入理解JavaScript系列(10):JavaScript核心(晋级高手必读篇) 深入理解JavaScript系列(11):执行上下文(Execution Contexts) 深入理解JavaScript系列(12):变量对象(Variable Object) 深入理解...

    JavaScript语言参考手册

    这一章包含了 JavaScript 的核心对象 Array,Boolean,Date,Function,Math,Number,Object 和 String。这些对象同时在客户端和服务器端的 JavaScript 中使用。 Array 属性 方法 Boolean 属性 方法 Date 属性 方法...

    基于FastAPI实现的Frida-RPC工具,自动解析JavaScript文件生成对应API接口

    Python执行PyexecJs通过Js的AST树结构获取Frida-Js脚本中rpc.exports的方法以及对应方法的参数个数,根据方法名和参数个数通过types.FunctionDef从Python AST字节码来动态生成新的Function对象,并且结合pydantic的...

    JavaScript中文参考手册

    这一章包含了 JavaScript 的核心对象 Array,Boolean,Date,Function,Math,Number,Object 和 String。这些对象同时在客户端和服务器端的 JavaScript 中使用。 Array 属性 方法 Boolean 属性 方法 Date ...

    JavaScript王者归来part.1 总数2

     第二部分 JavaScript核心  第4章 语言结构  4.1 JavaScript的基本文法   4.2 常量和变量   4.3 表达式和运算符符   4.4 控制语句 句   4.5 总结   第5章 数据类型  5.1 基本数据类型   5.2 数组和...

    rework-plugin-function:用于返工的 function() 插件,以前包含在核心中

    用于返工的 function() 插件,以前包含在核心中 添加用户定义的 CSS 函数。 例如创建black(0.5)快捷方式,以替换 long rgba(0, 0, 0, 0.5) 。 var rework = require ( 'rework' ) , var reworkFunction = ...

    html5入门到精通 视频教程

    ... 目录: ...07 JavaScript核心编程 08 DOM编程 09 阶段项目03 10 服务器端开发技术 11 HTTP协议 12 HTML5高级 13 阶段项目04 14 JQUERY 15 AJAX 16 阶段项目05 17 Bootstrap 18 ANGULARJS 19 拓展进阶

    Mailman-Javascript-Client

    确保您有 Mailman 核心正在运行。 您甚至可以在节点的交互式 cli 中对其进行测试: &gt; var mailman = require('mailman-js'); &gt; var client = new mailman.client('http://localhost:8001/3.0', {username: '...

    源文件程序天下JAVASCRIPT实例自学手册

    4.3 JavaScript核心对象 4.4 文档对象的引用 4.4.1 通过对象位置访问文档对象 4.4.2 通过name属性访问文档对象 4.4.3 通过id属性访问文档对象 4.4.4 通过联合数组访问文档对象 4.5 创建和使用自定义对象 4.5.1 通过...

    recline.backend.gdocs:用于访问 Google Docs 电子表格的 Javascript 库 - 还可用作 Recline 后端!

    一个简单的 JavaScript 库,它封装了 Google Docs JSON API。 套件的一部分(但不依赖于核心 Recline)。 用法 从 API 获取数据: recline.Backend.GDocs.fetch({ url: '...

    JavaScript详解(第2版)

     第9章 JavaScript核心对象   9.1 什么是核心对象   9.2 数组对象   9.2.1 数组的声明及填充   9.2.2 Array对象属性   9.2.3 关联数组   9.2.4 嵌套数组   9.3 数组方法   9.4 Date对象 ...

    javascript模版引擎-tmpl的bug修复与性能优化分析

    精妙的 tmpl 前端模板类开源的不少,但最属 jQuery 作者 John Resig 开发的 “javascript micro templating” 最为精妙,寥寥几笔便实现了模板引擎核心功能。 它的介绍与使用方式请看作者博客:...

    JavaScript基础知识

    掌握JavaScript的核心语法 会使用工具进行代码调试 3.什么是JavaScript? 是一种基于对象和事件驱动的、并具有安全性能的脚本语言 4.特点: 向HTML页面中添加交互行为 脚本语言,语法和Java类似 解释性语言,...

    azure-function-nodejs-hello:使用nodejs的简单的Azure无服务器功能

    azure-function-nodejs-你好使用Node.js的简单或无服务器计算一些有趣的链接:使用Azure Functions核心工具您可以通过运行以下命令创建一个新的功能项目:func init 这将创建一个骨架的天蓝色函数: host.json存储...

    javascript Object与Function使用

    因此,越来越多的人开始重新认识这门脚本语言,并在不断地探索关于JavaScript核心思想和实现原理,过程中遇到了一些非常混淆的问题。本文着重解释一个比较常见但是非常容易使开发人员或者是初学JavaScript的人非常...

    基于JavaScript的产品购物车数量加减+-(调试通过)

    核心代码: // 减 redu.addEventListener("click", function(){ if(Number(num.value) &gt; 0 ){ num.value = Number(num.value) - 1 localStorage.setItem("proNum", num.value); } }); 【适用人群】 所有...

    【JavaScript源代码】详解JavaScript闭包问题.docx

    通过将闭包视为核心语言构件的组成部分,JavaScript语言展示了其与函数式编程语言的紧密联系。由于能够简化复杂的操作,闭包在主流JavaScript库以及高水平产品代码中日益流行起来。 一、变量的作用域 在介绍闭包...

    【JavaScript源代码】JavaScript canvas实现流星特效.docx

     本文实例为大家分享了JavaScript canvas实现流星特效展示的具体代码,供大家参考,具体内容如下 function easeInQuad(curtime,begin,end,duration){ let x = curtime/duration; //x值 let y = x*x; //y值 ...

Global site tag (gtag.js) - Google Analytics