iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >聊聊JavaScript和Scala的表达式 Expression
  • 511
分享到

聊聊JavaScript和Scala的表达式 Expression

2023-06-03 14:06:23 511人浏览 独家记忆
摘要

我们先看下面这段简单的javascript代码。我在第10行调用了函数f,其中传入的第二个和第三个参数都是一个逗号表达式。函数f的实现,会检查这两个参数的类型,如果是函数,则执行函数调用,再打印其返回值,否则直接打印传入的表达式的值。执行上

我们先看下面这段简单的javascript代码。

我在第10行调用了函数f,其中传入的第二个和第三个参数都是一个逗号表达式。

函数f的实现,会检查这两个参数的类型,如果是函数,则执行函数调用,再打印其返回值,否则直接打印传入的表达式的值。

聊聊JavaScript和Scala的表达式 Expression

执行上面这段代码,打印输出如下:

聊聊JavaScript和Scala的表达式 Expression

我们可以看出,虽然传入的第一个参数为true,导致函数f内部只会打印第二个参数y代表的表达式的值,5,但是第三个参数代表的表达式在函数f调用时,也进行了表达式求值,所以最后console也输出了Big calculation2。

如果我们想实现所谓的“惰性求值”,有时候也称”惰性计算“,那么只需要将原本写在表达式位置的逻辑用一个JavaScript函数包裹起来,如下:

聊聊JavaScript和Scala的表达式 Expression

再次调用f,此时传入的参数y和z的类型为函数,因此在f进行调用时,同之前传入的表达式不同,这里并不会即时调用y和z代表的函数。打印输出:

聊聊JavaScript和Scala的表达式 Expression

我们再来看看Scala关于表达式的处理是否和JavaScript一致。

Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。

Scala 运行在Java虚拟机上,并兼容现有的Java程序。

Scala 源代码被编译成Java字节码,所以它可以运行于JVM之上,并可以调用现有的Java类库。

聊聊JavaScript和Scala的表达式 Expression

下图第5行和第12行我分别定义了两个Scala函数exp_test1和exp_test2, 逻辑和之前的JavaScript函数f类似。

exp_test1接受的第二个和第三个参数类型为exp1 :=> Unit,意思是需要传入一个表达式,这个表达式的返回类型是Unit。

exp_test2接收的第二个和第三个参数类型为exp1() :=> Unit,意思是需要传入一个函数,这个函数没有任何输入参数,函数的返回类型是Unit。

聊聊JavaScript和Scala的表达式 Expression

第19行到第25行是对这两个函数的各种测试,打印输出:

聊聊JavaScript和Scala的表达式 Expression

可以看到,即使传入两个函数exp_test1和exp_test2的第二个和第三个参数都是表达式,Scala也能做到对表达式的惰性求值:

第19行和第20行的函数调用,第三个参数位置的表达式和函数都没有即时求值,而是惰性求值。

第22行和第23行的函数调用,第二个参数位置的表达式和函数都没有即时求值,而是惰性求值。

这个小例子说明了不同的编程语言,对于函数调用的表达式求值方式可能采取了不同的实现:惰性求值或者即时求值。

聊聊JavaScript和Scala的表达式 Expression

要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

聊聊JavaScript和Scala的表达式 Expression

聊聊JavaScript和Scala的表达式 Expression

--结束END--

本文标题: 聊聊JavaScript和Scala的表达式 Expression

本文链接: https://www.lsjlt.com/news/234415.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 聊聊JavaScript和Scala的表达式 Expression
    我们先看下面这段简单的JavaScript代码。我在第10行调用了函数f,其中传入的第二个和第三个参数都是一个逗号表达式。函数f的实现,会检查这两个参数的类型,如果是函数,则执行函数调用,再打印其返回值,否则直接打印传入的表达式的值。执行上...
    99+
    2023-06-03
  • JavaScript和Scala中ABAP mesh表达式的表达是怎样的
    今天就跟大家聊聊有关JavaScript和Scala中ABAP mesh表达式的表达是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。ABAP ...
    99+
    2024-04-02
  • 简单聊聊工作中常用的Java Lambda表达式
    目录前言1. list转map2. filter()过滤3. foreach遍历4. groupingBy分组5. sorted+Comparator 排序6.distinct去重7...
    99+
    2022-11-13
    Java Lambda表达式 Java Lambda
  • 聊聊JavaScript和php的区别有哪些
    JavaScript和PHP是两种不同的编程语言,它们各自有着自己的特点和用途。虽然它们都可以用于Web开发,但是它们的差异还是很大的。下面将详细介绍JavaScript和PHP之间的区别。语言类型JavaScript是一种客户端脚本语言,...
    99+
    2023-05-14
  • Java8和Scala中的Lambda表达式有什么不同
    本篇内容介绍了“Java8和Scala中的Lambda表达式有什么不同”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、为什么使用Lambd...
    99+
    2023-06-17
  • 聊聊webview不调用javascript的的原因和解决方法
    在Android开发中,Webview是一个常用的控件,用于在应用程序中嵌入网页或者其他HTML组件。然而,有时候在使用Webview的过程中,可能会遇到Webview不调用JavaScript的问题。本文将主要介绍这个问题出现的原因和解决...
    99+
    2023-05-14
  • C# 表达式目录树Expression的实现
    目录表达式目录树表达式目录树的拼装应用Linq to SQLExpressionVisitor表达式目录扩展通过表达式目录树实现表达式目录树 表达式目录树:语法树,或者说是一种数据结...
    99+
    2024-04-02
  • 聊聊vue的两种路由模式(哈希和历史)
    路由器分别有两种模式:一种是hash模式、另一种是history模式,在使用vue-cli以及vue-router默认搭建的vue项目,如果不做特殊的配置,默认就是hash模式这两种模式各有自己的优势,但他们的使用区别,却多多少少都会在面试...
    99+
    2023-05-14
    Vue 前端 JavaScript
  • Scala读取文件和正则表达式的方法是什么
    这篇文章主要介绍“Scala读取文件和正则表达式的方法是什么”,在日常操作中,相信很多人在Scala读取文件和正则表达式的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Scala读取文件和正则表达式...
    99+
    2023-06-02
  • Expression操作运算符、表达式和操作方法总结
    一、Expression中的操作运算符 成员名称说明Add加法运算,如 a + b, ,不进行溢出检查,针对数值操作数。AddAssign加法复合赋值运算,如 (a += b), ,...
    99+
    2024-04-02
  • JavaScript中的运算符和表达式介绍
    目录1. 概述1.1 运算符1.2 表达式2. 运算符的应用2.1 算术运算符2.2 字符串运算符2.3 比较运算符1. 概述 1.1 运算符 运算符也称操作符,它是一系列操作符的符...
    99+
    2024-04-02
  • JavaScript有哪些表达式和运算符
    本篇内容主要讲解“JavaScript有哪些表达式和运算符”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript有哪些表达式和运算符”吧!  1、表达式  在定义完变量后,就可以对它...
    99+
    2023-06-03
  • JavaScript表达式和语句怎么使用
    这篇文章主要介绍了JavaScript表达式和语句怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JavaScript表达式和语句怎么使用文章都会有所收获,下面我们一起来看看吧。表达式任何可以计算为值的代...
    99+
    2023-06-26
  • JavaScript 中的运算符和表达式介绍(二)
    目录1. 运算符的应用1.1 赋值运算符1.2 逻辑运算符1.3条件运算符1.4 其他运算符1.4.1逗号运算符1.4.2.typeof 运算符1.4.3.new 运算符1.5运算符...
    99+
    2024-04-02
  • 聊聊Navicat统计的行数竟然和表实际行数不一致的问题
    背景 近期为了保障线上数据库的稳定性,我决定针对一些大表的历史数据有计划地进行备份迁移,但是呢,发现一个奇特的现象,Navicat统计行数和表自身count统计数竟然不一致!?0.0...
    99+
    2024-04-02
  • JavaScript中的表达式是什么
    今天给大家介绍一下JavaScript中的表达式是什么。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。在JavaScript中...
    99+
    2024-04-02
  • javascript的表达式指的是什么
    这篇文章主要讲解了“javascript的表达式指的是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascript的表达式指的是什么”吧! ...
    99+
    2024-04-02
  • JavaScript函数声明和函数表达式的区别
    目录一、写法不一样二、函数声明加载三、分析浏览器如何执行代码一、写法不一样 //函数声明 let res1 = sum1(10 , 20) console.log(res1...
    99+
    2024-04-02
  • JavaScript中的正则表达式(2) (转)
    JavaScript中的正则表达式(2) (转)[@more@]正则表达式对象的属性及方法   预定义的正则表达式拥有有以下静态属性:input, multiline, lastMatch, lastParen, leftContext, ...
    99+
    2023-06-03
  • JavaScript中如何使用表达式和运算符
    JavaScript中如何使用表达式和运算符,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。JavaScript表达式和Java...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作