zoukankan      html  css  js  c++  java
  • “函数对象”的属性length

    形参的个数,Rest参数不算。

     1 function ask(question, ...handlers) {
     2   let isYes = confirm(question);
     3 
     4   for(let handler of handlers) {
     5     if (handler.length == 0) {
     6       if (isYes) handler();
     7     } else {
     8       handler(isYes);
     9     }
    10   }
    11 
    12 }
    13 
    14 // 对于积极的回答,两个 handler 都会被调用
    15 // 对于负面的回答,只有第二个 handler 被调用
    16 ask("are you a pig?", () => alert('You said yes'), result => alert(result));

    ask的参数:

    1. 一个字符串
    2. 箭头函数一号
    3. 箭头函数二号

    函数被调用时的运行过程:
    调用confirm函数,显示一个信息,根据用户选择来返回一个布尔值。

    把这个布尔值交给isYes保存

    用for...of来遍历handlers数组

    用户点击确定,isYes值为true,开始遍历handlers数组:

    先是箭头函数一号,handler.length==0返回true,因为一号确实没得参数,所以length是0.

    然后检查isYes的值,一看是true,调用箭头函数一号。

    再然后是箭头函数二号,handler.length==0返回false,因为二号有参数,所以进入else之中,调用箭头函数二号,把true传递进去。

    用户点击取消,isYes值为false,开始遍历hanlers数组:

    先是箭头函数一号,handler.length==0返回true,因为一号确实没得参数,所以length是0.

    然后检查isYes的值,一看是false,不了了之,没有后序。

    再然后是箭头函数二号,handler.length==0返回false,因为二号有参数,所以进入else之中,调用箭头函数二号,把false传递进去。

  • 相关阅读:
    VS2010快捷键
    mvc 简单的分页扩展
    Asp.net(C#)给图片加上水印效果
    HTML特殊字符编码大全
    获取URL上的参数值
    json数据的时间格式转换如:/Date(2342561534)/
    js中文编码到C#后台解码
    获取浏览器滚动条高度
    使用js画图
    silverlight实时从Javascript获取json数据
  • 原文地址:https://www.cnblogs.com/flyover/p/14149505.html
Copyright © 2011-2022 走看看