javascript之小积累-匿名函数表达式的最佳实践

  在写js的时候,还是经常会用的匿名函数表达式,比如

1 setTimeout(function() {
2     console.log(110);
3 }, 1000);

  上面那个function()就是匿名函数表达式了,这种写法的好处是书写简单快捷,不用考虑给函数取名,十分方便。

  但是,也有几个缺点:

  1. 匿名函数在栈追踪中不会显示有意义的函数名,使得调试起来很困难

  2. 匿名函数无法调用自身,只能使用arguments.callee引用

  3. 匿名函数省略了对于代码的可读性,一个有函数名的函数能见名知意

  所以,像上面的行内函数表达式很常见,也很强大有用,匿名和具名之间的区别在这点上没有任何影响,给匿名函数具名能有效避免以上的缺点,算得上是一个最佳实践了。

1 setTimeout(function thisIsTest() {
2     console.log(110);
3 });
时间: 2025-01-05 21:55:19

javascript之小积累-匿名函数表达式的最佳实践的相关文章

【javaScript基础】立即调用函数表达式

在javaScript中,每个函数被调用时,都会创建一个新的执行上下文.因为在一个函数里面定义的变量和函数只能在里面访问,在外面是不行的,上下文提供了一种很容易的方法来创建私有性. //makeCounter函数返回另外一个匿名函数,这个匿名函数能够访问到"私有"变量i, 好像有一点"特权"性. function makeCounter() { // i只能在makeCounter的里面被访问到 var i = 0; return function() { cons

JavaScript 闭包系列二 --- 匿名函数及函数的闭包

一. 匿名函数 1. 函数的定义,可分为三种 1) 函数声明方式 function double(x) {    return 2*x;} 2)Function构造函数,把参数列表和函数体都作为字符串,不方便,不建议使用 var double = new Function('x', 'return 2*x;'); 3)函数表达式方式 var double = function(x) {    return 2*x;} 该形式中,等号右边是一个匿名函数,创建函数完毕后,将该函数赋给了变量doubl

【javaScript基础】马上调用函数表达式

在javaScript中,每一个函数被调用时,都会创建一个新的运行上下文.由于在一个函数里面定义的变量和函数仅仅能在里面訪问.在外面是不行的.上下文提供了一种非常easy的方法来创建私有性. //makeCounter函数返回另外一个匿名函数,这个匿名函数可以訪问到"私有"变量i, 好像有一点"特权"性. function makeCounter() { // i仅仅能在makeCounter的里面被訪问到 var i = 0; return function()

[javascript]IIFE立即执行的函数表达式

近况:最近一直忙着找实习没有更新,不过学习还是在继续的.最近在写Node.js又稍带把javascript的角落知识捡了一遍,过半个月打算去看看python和一些CSS深层的书和博客.工作找的还好,拿了两份实习offer,决定好去当小二了.这几天在看司徒老师的<javascript框架设计>,开篇第一张讲种子模块(即核心模块)里面提到了一个没见过的缩写词IIFE,查了查.看了看. 1.什么是IIFE IIFE是缩写,全拼Imdiately Invoked Function Expression

JavaScript:立即执行的函数表达式

先要理解清楚几个概念: 以下转自:http://www.cnblogs.com/TomXu/archive/2011/12/31/2289423.html 问题的核心 当你声明类似function foo(){}或var foo = function(){}函数的时候,通过在后面加个括弧就可以实现自执行,例如foo(),看代码: // 因为想下面第一个声明的function可以在后面加一个括弧()就可以自己执行了,比如foo(),// 因为foo仅仅是function() { /* code *

javascript之小积累--typeof与instanceof的区别

1.typeof 是获取一个变量或表达式的类型,返回的值通常是string, number, boolean, object(null, 数组, 对象), function, undefined,可以用typeof 判断一个值是否为空. eg:  if(typeof a != "undefined") { } 2.instanceof 是判断一个变量是否有某个对象的实例,返回值为true,false. eg : var a = new Array();  console.log(a i

javascript之小积累-.-添加form表单查询的enter键支持

/* * 列表查询的enter键支持 * author by 清风 */ function enterEvent() { document.onkeydown = function(event){ var e = event || window.event || arguments.callee.caller.arguments[0];  if (e && e.keyCode==13) { // enter 键 $('#queryBtn').click(); return false;  

【JavaScript】之函数表达式

今天主要复习了<JavaScript高级程序>中 函数表达式 这一章,主要是自己对闭包和this的概念还是理不清楚,导致在做小demo的时候这一块完成时懵懂不知的,先做个知识梳理,再继续加强实践吧.. 一.函数表达式的特征 函数声明,在执行代码之前会先读取函数声明(同时意味着可以将函数声明放在调用它的语句的后面) function functionName (arg0,arg1,arg2){ //函数体 } 使用函数表达式定义函数时,无需对函数命名,从而也可以创建匿名函数. 函数表达式的特点:

JavaScript中的函数表达式

在JavaScript中,函数是个非常重要的对象,函数通常有三种表现形式:函数声明,函数表达式和函数构造器创建的函数. 本文中主要看看函数表达式及其相关的知识点. 函数表达式 首先,看看函数表达式的表现形式,函数表达式(Function Expression, FE)有下面四个特点: 在代码中须出现在表达式的位置 有可选的函数名称 不会影响变量对象(VO) 在代码执行阶段创建 下面就通过一些例子来看看函数表达式的这四个特点. FE特点分析 例子一:在下面代码中,"add"是一个函数对象