问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

这段javascript脚本最后面的一对圆括号是什么意思?

发布网友 发布时间:2022-05-02 15:22

我来回答

4个回答

懂视网 时间:2022-05-14 16:14

本篇文章给大家带来的内容是关于JavaScript高阶函数的详细介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

把函数以数据的形式去使用,并解锁一些强大的模式。

1354044822-5c89cf2124ccc_articlex.png

高阶函数

接受和/或返回另外一个函数的函数被称为高阶函数。

之所以是高阶,是因为它并非字符串、数字或布尔值,而是从更高层次来操作函数。漂亮的元。

使用 JavaScript 中的函数,你可以

  • 将它们存储为变量
  • 在数组中使用它们
  • 将它们指定为对象属性(方法)
  • 将它们作为参数进行传递
  • 将它们从其他函数中返回
  • 就像所有的其他数据一样。这是关键所在。

    函数操作数据

    字符串是数据

    sayHi = (name) => `Hi, ${name}!`;
    result = sayHi('User');
    console.log(result); // 'Hi, User!'

    数字是数据

    double = (x) => x * 2;
    result = double(4);
    console.log(result); // 8

    布尔型是数据

    getClearance = (allowed) => allowed ?
     'Access granted' :
     'Access denied';
    result1 = getClearance(true);
    result2 = getClearance(false);
    console.log(result1); // 'Access granted'
    console.log(result2); // 'Access denied'

    对象是数据

    getFirstName = (obj) => obj.firstName;
    result = getFirstName({
     firstName: 'Yazeed'
    });
    console.log(result); // 'Yazeed'

    数组是数据

    len = (array) => array.length;
    result = len([1, 2, 3]);
    console.log(result); // 3

    这5种类型是所有主流语言中的一等公民。

    是什么使他们成为一等公民的?你可以传递它们,将它们存储在变量和数组中,将它们用作计算的输入。你可以像使用任何数据一样去使用它们。

    函数也可以作为数据的形式去用

    1045104004-5c89cf0a7f7d7_articlex.png

    在javascript中把函数用作数据的4种方式:

    1. 把它们当作参数传给其它函数
    2. 把他们设定成对象属性
    3. 保存在数组中
    4. 把它们设为变量的形式

    作为参数的函数

    isEven = (num) => num % 2 === 0;
    result = [1, 2, 3, 4].filter(isEven);
    console.log(result); // [2, 4]

    看看 filter 是如何用 isEven 来决定保留哪些数字的? isEven是一个函数,是另一个函数的参数

    它由每个数字的 filter 调用,并使用返回值 truefalse 来确定这个数字是否应该保留或丢弃。

    返回函数

    add = (x) => (y) => x + y;

    add 需要两个参数,但不是一次全部提供。这是一个只需要 x 的函数,它返回一个只需要y的函数。因为 JavaScript 允许函数成为返回值 —— 就像字符串、数字、布尔值那样。

    如果你愿意,仍然可以立即提供 xy,并进行双重调用

    result = add(10)(20);
    console.log(result); // 30

    或者先 xy

    add10 = add(10);
    result = add10(20);
    console.log(result); // 30

    让我们回过头来看最后一个例子。 add10 是用一个参数调用 add 的结果。并控制台中输出它。

    3073584220-5c89cf38a64e6_articlex.png

    add10 是一个函数,它接受一个 y 并返回 x + y。在你提供 y 之后,它会马上计算并返回你所要的最终结果。

    3944606209-5c89cf44e479e_articlex.png

    更高的可重用性

    高阶函数的最大好处可能是更高的可重用性。没有它,JavaScript 数组的主要方法 —— mapfilterreduce 将不存在!

    这是一个用户列表。我们将对他们的信息进行一些计算。

    users = [{
     name: 'Yazeed',
     age: 25
    }, {
     name: 'Sam',
     age: 30
    }, {
     name: 'Bill',
     age: 20
    }];

    Map

    如果没有高阶函数,我们需要用循环来模仿 map 的功能。

    getName = (user) => user.name;
    usernames = [];
    for (let i = 0; i < users.length; i++) {
     const name = getName(users[i]);
     usernames.push(name);
    }
    console.log(usernames);
    // ["Yazeed", "Sam", "Bill"]

    或者我们可以这样做!

    usernames = users.map(getName);
    console.log(usernames);
    // ["Yazeed", "Sam", "Bill"]

    Filter

    在没有高阶函数的世界中,我们仍然需要循环来重新实现 filter 的功能。

    startsWithB = (string) => string
     .toLowerCase()
     .startsWith('b');
    namesStartingWithB = [];
    for (let i = 0; i < users.length; i++) {
     if (startsWithB(users[i].name)) {
     namesStartingWithB.push(users[i]);
     }
    }
    console.log(namesStartingWithB);
    // [{ "name": "Bill", "age": 20 }]

    或者我们可以这样做!

    namesStartingWithB = users
     .filter((user) => startsWithB(user.name));
    console.log(namesStartingWithB);
    // [{ "name": "Bill", "age": 20 }]

    Reduce

    是的,reduce......没有更高阶的功能,实现不了那么多很酷的东西!!

    热心网友 时间:2022-05-14 13:22

    这是无名函名的调方式而已。

    一个例子来说,如果你这样定义:
    function Name(){};
    调用时你可以使用Name();进行调用。在JS中存在一个无名函数的方法:
    function () {};
    这样一个函数你怎么调用?如果真的这样定义了除非是OOP,否则你永远没有机会调用不是?而OOP编程时会出现这种情况,如一个对象中定义这样的语句:
    this.area = function (){};
    这样也就是说我们定义了一个方法area,建立对象后可以使用“对象名.area();”这种形式进行调用。对于无名函数一般不想让别人误调用,而自己却只要调用一次时,可以将函数体加括号后看作一个对象进行立即执行。

    也就是这种形式:
    (function (){})();

    严格来说,这是将定义与语句混写的形式。实际上它是一条语句,而不是一个定义。定义是后边没有分号的。如:
    function () {}
    而语句则后边是带;要求执行的!如:alert("1");这就是语句。为了有效地表达,所以这里使用了语句的形式,就是我们常说的无名函数的执行问题!

    热心网友 时间:2022-05-14 14:40

    (函数( ) (
    如果( typeof拖动! = “未定义” )

    无功_Drag =拖曳;

    / / ? ˴ ?????拖? ?
    / / - elementid : Ҫ ? ž ? Ԫ ? ص ?编号
    变种拖动= window.Drag =功能( elementid ) (
    无功thisDrag =这;
    this.DifWidth = 0 ;
    this.DifHeight = 0 ;
    this.thisDivDrag = document.getElementById ( elementid ) ;
    this.thisDivDrag.onmousedown =功能(活动) (
    无功theevent ;
    无功theSrcevent ;
    如果( window.event )

    theevent = window.event ;
    theSrcevent = window.event.srcElement ;

    其他的

    theevent =活动;
    theSrcevent = event.target ;

    thisDrag.DifWidth = theevent.clientX - theSrcevent.offsetLeft ;
    thisDrag.DifHeight = theevent.clientY - theSrcevent.offsetTop ;
    document.body.onmousemove =功能(活动) (
    无功theevent ;
    如果( window.event )

    theevent = window.event ;

    其他的

    theevent =活动;

    thisDrag.thisDivDrag.style.left = theevent.clientX - thisDrag.DifWidth ;
    thisDrag.thisDivDrag.style.top = theevent.clientY - thisDrag.DifHeight ;
    ) ;
    document.body.onmouseup =功能(活动)

    document.body.onmousemove = “ ” ;
    ) ;
    ) ;
    ) ;
    })();

    热心网友 时间:2022-05-14 16:15

    () 立即调用该函数!
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    吸血鬼与十字架月音被催眠在第几集 十字架与吸血鬼第一季里,胡梦等人后来是不是知道月音是人类了? 过多手淫该吃什么药补一补? 以前手淫过,肾虚腰疼吃些什么药或补品 ...打开这个软件输我原来的密码就成了这样子,求大神解答&gt; &lt;!_百度... 电脑被别人控制了? 咸肉芥菜炒干丝 咸肉芥菜炒干丝的做法 ...年2月29日出生.女。申时出生的。请高手帮我算下运势。要详细点... 《阅读,让教师遇见更好的自己》读后感 2023护士节祝福语正能量(105句) 柳怡彤名字好不好 javascript 中 offsetWidth 是什么意思? 力士沐浴露舞媚怡香和迷情花语哪个好 js中的鼠标拖拽时间。下面这句话是什么意思?谢谢大家了~ ~ 很喜欢力士舞媚怡香沐浴露的味道,这是什么类型的味道?有这样的香水吗? 哪个懂前端开发的,知道什么是页面回流啊,面试被问到了 衣服粘到去腋臭的怡香露,有什么办法可以去掉? 洗完澡总是感觉皮肤干干的,请问有什么比较好的浴后护肤品么?使用方法简单些的。 OFFSET(损益表底稿!$C$52,ROW()-49,LEFT(month,2),)是什么意思 javascript中的parseInt(div.style.left)是什么意思,? 这个ev.pageX - oDiv.offsetLeft是什么意思? js的offset什么意思 Java script 的offsetWidth,offsetHeight,offsetLeft,offsetRight的意思,用途是撒子 js offsetLeft方法属性问题 HTML中的问题:div.stlye.left和div.offsetleft,div.clientleft这三个是... offsetleft和offsettop什么意思 JS中的offsetLeft属性具体有什么用? 妈妈的脸冻了,怎么办? 脸冻了怎么办 小妙招,脸冻伤了,只是一个小硬块,还没有烂,怎么办才能恢复 冬天脸冻了怎么办?(脸好了但有印子) 力士精油香氛沐浴乳 舞媚怡香 200ml 瓶子上的瓶盖怎么打开? 这段js脚本最后面的一对圆括号是什么意思? 力士舞媚怡香怎么没买不到了 android 里面mSwipeListView.setOffsetLeft(this.getResources().getDisplayMetrics().widthPixels*2&#47;3); 力士的精油香氛沐浴露到底有几种啊?我以前用了舞媚怡香,可是今天突然发现有幽莲魅肤……到底有多少种, javascript 中 offsetWidth clientwidth 是什么意思 这段导航栏的代码每一行都是什么意思啊? 微博推广广告怎么做 在oracle如何判断某个字段涉及到哪个表 iwantsomerice后面用加s吗 I want some bread.bread要加s吗? some后面跟可数名词还是跟不可数名词 iwantsomechickeh。(翻译) some后面跟单数还是复数? any和some后面如果是可数名词跟复数还是单数 some后加可数名词的复数还是单数 want后面加名词单数还是复数 some后面什么时候加复数名词什么时候加单数名词 英语问题 some 后面接名词加不加复数? some后面什么时候加复数名词 单数名词