在javaScript中,每一个函数被调用时,都会创建一个新的运行上下文.由于在一个函数里面定义的变量和函数仅仅能在里面訪问.在外面是不行的.上下文提供了一种非常easy的方法来创建私有性. //makeCounter函数返回另外一个匿名函数,这个匿名函数可以訪问到"私有"变量i, 好像有一点"特权"性. function makeCounter() { // i仅仅能在makeCounter的里面被訪问到 var i = 0; return function()…
首先这是js的一种函数调用写法,叫立即执行函数表达式(IIFE,即immediately-invoked function expression).顾名思义IIFE可以让你的函数立即得到执行(废话). 一般来说,IIFE有以下几种用途: 1. 创建只使用一次的函数,并立即执行它. 2. 创建闭包,保存状态,隔离作用域. 3. 作为独立模块存在(例子如jQuery),防止命名冲突,命名空间注入(模块解耦). 1. 创建只使用一次的函数,并立即执行它 创建只使用一次的函数比较好理解,在需要调用函数的…
ES6 标准新增了一种新的函数: Arrow Function(箭头函数). x => x *x 上面的箭头相当于: function (x){ return x*x; } 箭头函数相当于匿名函数,并且简化了函数定义.一种像上面的,只包含一个表达式, 连{ ... }和return都省略掉了.还有一种可以包含多条语句,这时候就不能省略{ ... }和return: x =>{ if(x > 0){ return x * x; }else{ return -x *x; } } 如果参数不是…
函数声明 JavaScript中声明函数的方式:(无需声明返回值类型) function add(i1, i2) {             return i1 + i2;//如果不写return返回的是undefined         } int add(int i1,int i2)//C#写法 不需要声明返回值类型.参数类型.函数定义以function开头.         var r = add(1, 2);         alert(r);         r = add("你好&q…
函数第一节: 1.函数的概念及作用     函数是由事件驱动的或者当他被调用时可执行的可重复使用的代码块.   具备一点功能的代码段,代码段来实现具体的功能.要想实现一个函数的功能需要对函数进行调用.每写完一个函数就需要在使用时进行调用   2.函数的好处    重复使用     忽略细节     选择执行   3.函数的定义    通过关键字function声明,      function fn(){}      其中:         function---为声明函数的关键字,指出这是一个…
1.首先是函数语句: myfunc(); function myfunc() { //执行一些语句 } 当函数语句被定义的时候,在一个脚本代码被优先考虑,因此,无论该函数是定义之前或者定义之后都可以被脚本使用,就像上面的语句一样. 2.函数表达式: myfunc(); var myfunc = function() { //执行的语句 } 这上面的语句是无法成功运行的,只有像下面的语句才可以成功运行额: var myfunc = function() { //执行的语句 } myfunc();…
函数的基础 函数: 把实现相同功能的代码放到一个函数体中,当想实现这个功能时,直接执行这个函数即可:减少了的冗余:高内聚,低耦合--> 函数的封装: 函数:引用数据类型: var a = 10; function : 关键字:声明定义一个函数: function 函数名(){} function : 功能:方法: 函数分为定义和执行: function fn1() { console.log(100); } 函数执行: 让里面的代码运行: fn1(); console.log(200); fun…
简单来说,回调函数:也就是将要执行的函数. 回调函数具体的定义为:函数A作为参数(函数引用)传递到另一个函数B中,并且这个函数B执行函数A.我们就说函数A叫做回调函数.如果没有名称(函数表达式),就叫做匿名回调函数. (1)回调函数的定义 function add(x,y,fn) { /* * this.x this.y:属于add类的全局变量的定义 * */ ; ; if(fn){ /*判断是否有回调函数,有的话执行传入的函数(传入参数)*/ fn(this.x+this.y); } } (2…
1.==和===的区别(!=和!==是相反的比较) 它们采用了同一性的两个不同定义.==是相等性,===是等同性. ①“===”进行两个值的比较 两个值的类型不同,就不相等 两个值是数字,并且值相同,除非其中一个或者两个都是NaN,否则他们是相同的.NaN和NaN也是不同的,判断一个值是否是NaN,可以使用全局函数isNaN(). 两个值是字符串:如果长度不相等就不相同,如果长度相同并且每一个索引的字符也相同就认为两个字符串相同. 两个值是布尔值,同为true或者false就认为相同 两个值是对…
一.函数的定义 1.function语句形式 //1.function语句式 function test1(){ alert("I am test1"); } test1(); 2.函数直接量形式 //2.函数直接量形式 var test2 = function(){ alert("I am test2"); } test2(); 3.通过Function构造函数形式 Function构造函数可以接收任意数量的参数,但最后一个参数始终都被看成函数体.我们不推荐使用,…
1.递归 function fact(num){ if(num<1){ return 1; } else{ return num*fact(num-1); } } var author = fact; fact= null; console.log(author(4));  会出现问题: 改进型: var fact = (function f(num){ if(num<1){ return 1; }else{ return num*f(num-1); } }); 即便把函数赋值给另一个名字,函…
在处理页面上一个失焦效果时遇到了  xxxx is not a function 这样的错误,但函数确实有定义成功 ,经过测试发现是 id 值与函数名一致导致的问题,但是产生的原因没有找到详细的解释 ,如果有了解的大佬希望可以在评论中留言告知. 具体测试代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <scr…
① 递归 ② 闭包 ③ 模仿块级作用域 ④ 私有变量…
一. 下面代码用于理解函数的声明和调用. function makeCounter() { // 只能在makeCounter内部访问i var i = 0; return function () { console.log(++i); }; } // 注意,counter和counter2是不同的实例,分别有自己范围内的i. var counter = makeCounter(); counter(); // logs: 1 counter(); // logs: 2 var counter2…
定义js函数的方法有两种,1.函数声明 2.函数表达式 这两种方式的区别是:1.函数声明可以先调用后定义(javascript引擎在解释的时候会把所有的函数声明提升)2.函数表达式必须先定义后使用.看下面例子直观区别 函数声明 myCount();//正确,可以先调用 //定义,函数声明 function myCount() { console.log("hello js"); } myCount();//正确,可以后调用 函数表达式 myCount();//错误,提示未定义 //函数…
定义函数的方式有两种:一种是函数声明,另一种就是函数表达式. 函数声明的一个重要特征就是函数声明提升(function declaration hoisting),意思是在执行代码前会先读取函数声明. 这个例子不会报错,因为代码在执行前会先读取函数声明.理解函数提升的关键就是区别函数声明和函数表达式之间的区别. 函数表达式的方式有几种表达形式,其中很常见的一种形式就是匿名函数的形式: 这种情况下创建的函数叫做匿名函数,因为function关键字后面没有标识符.匿名函数的name属性是空字符串.…
day52 参考:https://www.cnblogs.com/liwenzhou/p/8004649.html 函数 函数定义 JavaScript中的函数和Python中的非常类似,只是定义方式有点区别. function foo(a, b) { console.log("a:", a) console.log("b:", b) return a+b; }; //匿名函数 var func = function (a, b){ console.log(&quo…
本书目录 第一章:  JavaScript语言基础 第二章:  JavaScript内置对象第三章:  窗口window对象第四章:  文档document对象第五章:  表单form对象第六章:  History与Navigator对象第七章:  JavaScript框架编程第八章:  JavaScript异常处理 第九章:  自定义JavaScript对象     第一章 JavaScript语言基础 什么是JavaScript JavaScript是一种基于对象(Object)和事件驱动(…
php和JavaScript,掌握JavaScript基础,自定义函数,流程控制语句,事件,调用JavaScript脚本,在PHP中使用JavaScript. JavaScript是网景公司开发的,是一种基于对象和事件驱动并具有安全性能的解释型脚本语言. JavaScript基础,数据类型,变量,注解 数据类型,unll,undefined,对象型,布尔型,数值型,字符串型. 变量,指在程序中已经存在的命名存储单元,存放信息的容器. abstract, continue, finally, in…
JavaScript 一.JavaScript概念: JavaScript面向对象事件驱动具有安全性的脚本语言,面向对象 JavaScript特点: 1.解释性语言,边运行边解释 2.和HTML页面实现交互效果 3.语法类似于Java 4.一搬用于编写客户端脚本 JavaScript组成: 1.ECMAScript:脚本语言规范(标准) 2.BOM Browser Object Model浏览器对象模型 3.DOM Document Object Model文档对象模型 二.JavaScript…
我们经常会看到这样的写法: ;(fuction () { // do something })() 这就是一个简单的IIFE(立即执行函数表达式,immediately-invoked function expression)了. 这样的写法有什么好处呢?来简单分析一下. 1. 开头的分号 我们都知道,js是可以加分号或者不加分号的,在某些情况下,不加分号会让解析器解析出错,举个例子: var a = 0 , b = 0 ; a = b + 3 (b = a) // Uncaught TypeE…
JavaScript引入的方式 直接在<script>标签中写 <script> console.log('hello world!'); </script> 引入JS文件 <script src="helloworld.js"></script> 注释 //单行注释 /* *多 *行 *注 *释 */ 变量的声明 JavaScript的变量名可以使用_,数字,字母,$组成,不能以数字开头 使用关键字var 使用驼峰式命名规则…
JavaScript概述 ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这门语言能够成为国际标准.次年,ECMA发布262号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为ECMAScript,这个版本就是1.0版. 该标准一开始就是针对JavaScript语言制定的,但是没有称其为JavaScript,有两个方面的原因.一是商…
一 闭包 各种专业文献上的"闭包"(closure)定义非常抽象,很难看懂.我的理解是,闭包就是能够读取其他函数内部变量的函数. 由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成"定义在一个函数内部的函数". 所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁. function f1(){ var n=999; function f2(){ alert(n); } return f2; } var res…
立即调用函数表达式 给函数体加大括号,在有变量声明的情形下,没有任何区别 但是,如果只是[自动执行]的情形下,就会不同 因为,一个匿名函数,不赋值或函数体不加小括号,是不能自动执行的 //以下情形并无差别 var count100 = function getCount100(){ return(100) }();//100 var count200 = (function getCount200(){ return(200) })();//200,加小括号和count100没有区别 var c…
普通函数 function foo(a, b){ return a + b; } foo(10, 20) >>> 30 匿名函数 var f = function(){console.log(123)}; f() >>> 123 自执行函数 (function(a,b){return a + b})(10, 20) >>> 30 内置函数forEach 传一个参数: var a1 = [11, 22, 33, 44, 55]; a1.forEach(f…
01. 数据类型 1. 分类(2大类) * 基本(值)类型 * Number: 任意数值 * String: 任意文本 * Boolean: true/false * undefined: undefined * null: null * 对象(引用)类型 * Object: 任意对象 * Array: 特别的对象类型(下标/内部数据有序) * Function: 特别的对象类型(可执行)2. 判断 * typeof: * 可以区别: 数值, 字符串, 布尔值, undefined, funct…
" 目录 #. 函数 1. 定义 2. arguments 参数 3. 全局变量与局部变量 4. 语法分析 #. 内置对象和方法 1. 自定义对象 2. 类之继承 3. Date 4. JSON 5. RegExp 6. Math #. 函数 1. 定义 基本函数: ![在这里插入图片描述](/media/ai/2019-03/11a8f5e8-0fbf-4027-9a91-59ea12ba0eee.png) 带参数的函数: ![在这里插入图片描述](/media/ai/2019-03/bfa6…
本文来自汤姆大叔 前言 大家学JavaScript的时候,经常遇到自执行匿名函数的代码,今天我们主要就来想想说一下自执行. 在详细了解这个之前,我们来谈了解一下“自执行”这个叫法,本文对这个功能的叫法也不一定完全对,主要是看个人如何理解,因为有的人说立即调用,有的人说自动执行,所以你完全可以按照你自己的理解来取一个名字,不过我听很多人都叫它为“自执行”,但作者后面说了很多,来说服大家称呼为“立即调用的函数表达式”. 本文英文原文地址:http://benalman.com/news/2010/1…
回顾前面介绍过的三种定义函数方式 1. function sum (num1, num2) { return num1 + num2; }  //函数声明语法定义 2. var sum = function(num1, num2){ return num1 + num2; }; //函数表达式定义 3. var sum = new Function("num1", "num2", "return num1 + num2"); //Function…