function a(b) { console.log(b) b = function c() { b = 2 c = 3 console.log("b:change",b); console.log("c:",c); } console.log("b:before",b); b(); b(); } a(0)
每一个函数都是Function类型的实例,函数是对象,函数名是一个指向函数对象的指针。此处是一个函数表达式,b=function c(){},对该函数的定义,引用的指针是保存在了b中,c仅仅是为了让函数体能够使用这个名字来引用自身。在b的这个函数体内,c是作为不可重写的local变量使用的,调用b()执行时b=2,b的引用被改变了,如果再次调用b();那么会报错b 不是一个function.
可以看下控制台打印结果:
0 b:before function c() b:change 2 c: function c() Uncaught TypeError: b is not a function
总结:函数声明和函数表达式的函数名都是对函数的引用,这个引用可以改变;对于函数表达式中的可选函数名来说,在函数体内此函数名引用不可更改,并且只供该函数体调用自身使用。
相关推荐
js 函数 javaScript 自定义函数一览表 js 函数 javaScript 自定义函数一览表
C#与JAVASCRIPT函数的相互调用 C#调用JAVASCRIPT函数的调用 JAVASCRIPT调用C#函数的调用
今天骚凯问了一道变量名冲突的题目,感觉很有意思,顺便也复习一下预解析的一些知识,有不对的地方忘前辈大神指正,题目是这样的: var a=100; function a(){ console.log(a); } a(); 这个串代码执行完会报错 : ...
主要介绍了javascript实现根据函数名称字符串动态执行函数的方法,结合实例形式分析了JS函数名的判断及函数动态调用相关操作技巧,需要的朋友可以参考下
javascript函数式编程 javascript函数式编程 javascript函数式编程
主要介绍了JavaScript函数参数使用带参数名的方式赋值传入的方法,实例分析了javascript函数传递参数的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
JS函数集合大全/JS函数/JS函数集合大全/JS函数
javascript高效编程和函数式编程指南书籍PDF,适合深入学习javascript
JS公共函数JS公共函数JS公共函数JS公共函数JS公共函数JS公共函数JS公共函数JS公共函数JS公共函数
java javascript javascript函数java javascript javascript函数java javascript javascript函数java javascript javascript函数java javascript javascript函数
javascript函数速查javascript函数速查javascript函数速查javascript函数速查
javascript函数大全 1.document.write(""); 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document->html->(head,body) 4.一个浏览器窗口中的DOM顺序是:window->(navigator,screen,history,location,document)...
JavaScript函数(源代码)JavaScript函数(源代码)JavaScript函数(源代码)JavaScript函数(源代码)JavaScript函数(源代码)JavaScript函数(源代码)JavaScript函数(源代码)JavaScript函数(源代码)...
js验证函数包js验证函数包js验证函数包js验证函数包js验证函数包
js函数库js函数库js函数库js函数库js函数库js函数库js函数库js函数库
《Javascript函数式编程》配套代码,适合函数式编程入门。
JavaScript函数式编程.pdf 个人收集电子书,仅用学习使用,不可用于商业用途,如有版权问题,请联系删除!
本书专门介绍JavaScript函数式编程的特性。 全书共9章,分别介绍了JavaScript函数式编程、一等函数与Applicative编程、变量的作用域和闭包、高阶函数、由函数构建函数、递归、纯度和不变性以及更改政策、基于流的...
本书专门介绍JavaScript函数式编程的特性。 全书共9章,分别介绍了JavaScript函数式编程、一等函数与Applicative编程、变量的作用域和闭包、高阶函数、由函数构建函数、递归、纯度和不变性以及更改政策、基于流的...