js函数定义 调用 预解析

两种方式

函数声明

function 函数名 () {} //分装函数 无结果 可以不写;

函数表达式(内部为匿名函数)

var 变量名 = function(){};
函数表达式中,创建的函数叫做匿名函数,因为function关键字后面没有标识符。

匿名函数调用

下面两个等价

   var aa = function(x){
        alert(x);
    }(5);//5

(function(x){alert(x);})(5);//5

自执行函数

三种写法特点:
①结构清晰,开头加!,结尾加()。不容易乱,推荐使用;
②可以表明匿名函数与之后的()为一个整体,推荐使用;
③无法表明函数与之后()为一个整体,不推荐使用:
创建了一个匿名的函数,并立即执行它,由于外部无法引用它内部的变量,因此在执行完后很快就会被释放,关键是这种机制不会污染全局对象。
前面的()、+、-、!等告诉解析器这是个表达式,后面的()是让函数执行(表达式才能执行)

(function () { /* code */ } ()); // 推荐使用这个
(function () { /* code */ })(); // 但是这个也是可以用的

// 如果你不在意返回值,或者不怕难以阅读
// 你甚至可以在function前面加一元操作符号

!function () { /* code */ } ();
~function () { /* code */ } ();
-function () { /* code */ } ();
+function () { /* code */ } ();

以上 源 :https://www.cnblogs.com/jessiespur/p/9283101.html
中有详细介绍

其他相关链接
https://www.cnblogs.com/ayning/p/4113314.html
https://www.cnblogs.com/timl525/p/5092132.html
http://www.cnblogs.com/TomXu/archive/2011/12/31/2289423.html

关于调用

有return时 return 返回到函数的顶部
function()返回return值 否则我return 默认返回undefined
document.write(function());

无return
调用
function();//函数内部需要有输出语句

多个函数共同实现一个效果 嵌套与否都可
框架 函数调用函数(自身或者别的)

预解析

js编译

语法分析

查找基本语法有没有错误

预解析

执行之前进行预解析
var、function关键字提前到“当前”作用域的顶部,变量默认值为undefined
关于变量冲突:
函数覆盖变量名称 函数后面覆盖前面

代码顺序执行

给提升到顶部的变量赋值

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 8,238评论 2赞 17
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 14,386评论 0赞 38
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 29,252评论 1赞 45
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 10,023评论 0赞 3
  • 函数只定义一次,但可能被执行或调用任意次。JS函数是参数化的,函数的定义会包括一个称为形参的标识符列表,这些参数在...
    PySong阅读 742评论 0赞 0

友情链接更多精彩内容