这段代码运行后报错:Uncaught TypeError: foo is not a function 原因在于变量foo的声明提升,后面的赋值,函数表达式不会提升,因此当代码运行到 var x=foo(); 时, foo()是未定义的。 可以把 var x=foo(); 放到 变量 foo 后再执 ...
分类:
编程语言 时间:
2017-08-05 16:46:30
阅读次数:
190
一、变量声明和变量赋值: 你可能认为alert出来的结果是1,然后实际结果是“undefined”。要了解为什么,我们需要知道JavaScript里的3个概念: 1、所有的全局变量都是window的属性,语句 var a = 1;等价于window.a = 1; 可以用如下方式来检测全局变量是否声明 ...
分类:
其他好文 时间:
2017-08-04 00:23:23
阅读次数:
253
立即调用的函数表达式 前言 大家学 JavaScript 的时候,经常遇到自执行匿名函数的代码,今天我们主要就来想想说一下自执行。 在详细了解这个之前,我们来谈了解一下“自执行”这个叫法,本文对这个功能的叫法也不一定完全对,主要是看个人如何理解,因为有的人说立即调用,有的人说自动执行,所以你完全可以 ...
分类:
编程语言 时间:
2017-08-01 19:06:44
阅读次数:
218
函数跟随一对圆括号()表示函数调用 但有时需要在定义函数之后,立即调用该函数。这种函数就叫做立即执行函数,全称为立即调用的函数表达式IIFE(Imdiately Invoked Function Expression) IIFE一般用于构造私有变量,避免全局空间污染 [注意]javascript引擎 ...
分类:
编程语言 时间:
2017-07-31 10:09:05
阅读次数:
158
lambda表达式(对简单赋值进行操作):同样的函数表达式不同的写法 lambda表达式默认包含return功能,自动会返回函数 ...
分类:
编程语言 时间:
2017-07-30 16:58:09
阅读次数:
138
可以拆开理解:;!function(){}(); ①函数后的();表示要执行这个函数; ②而();要求前面必须是一个表达式。(最后有js表达式的定义)。 ③所以“!”的作用是将function(){}函数体转为一个函数表达式。 同样的道理: ~function(){}();一样可行。 但是我们常用的 ...
分类:
其他好文 时间:
2017-07-26 01:49:28
阅读次数:
105
闭包 有权访问另一个函数作用域中的变量的函数 匿名函数 函数没有名字 少用闭包 由于闭包会携带包含它的函数的作用域,因此会比其它函数占用更多的内存。过度使用闭包可能会导致内存占用过多,我们建议读者只在绝对必要时再考虑使用闭包 模块模式 增强的模块模式 特权方法 有权访问私有变量的公有方法叫做特权方法 ...
分类:
Web程序 时间:
2017-07-25 19:54:12
阅读次数:
173
定时器的时间间隔是不能修改的,只能不停的创建,清除,创建。做出时间间隔变换的表象使用函数表达式和递归实现: ...
分类:
其他好文 时间:
2017-07-25 19:29:54
阅读次数:
77
立即调用的函数表达式 前言 大家学 JavaScript 的时候,经常遇到自执行匿名函数的代码,今天我们主要就来想想说一下自执行。 在详细了解这个之前,我们来谈了解一下“自执行”这个叫法,本文对这个功能的叫法也不一定完全对,主要是看个人如何理解,因为有的人说立即调用,有的人说自动执行,所以你完全可以 ...
分类:
编程语言 时间:
2017-07-24 01:32:38
阅读次数:
250
1.函数~函数声明和函数表达式 解析器在向执行环境加载数据时,函数声明和函数表达式的对待不同。 解析器会率先执行函数声明,将会在任何使用到它的地方前加载, 而对于函数表达式,只会在执行到的时候去加载;这就是函数声明提升的过程(function declaring hoisting). 如下这样子是可 ...
分类:
Web程序 时间:
2017-07-23 09:58:58
阅读次数:
179