目录

1前言... 3

2 JavaScript简介... 3

2.1概念及作用... 3

2.2发展史... 3

3 JavaScript语法... 4

3.1学习准备... 4

3.2 JavaScript与HTML结合.. 4

3.3 JavaScript注释及命名规则.. 5

3.4 JavaScript中原始数据类型.. 5

3.5 JavaScript中变量... 5

3.6 JavaScript中运算符... 6

3.7 JavaScript常见的输出语法.. 7

3.7 JavaScript的关键字... 7

3.8 JavaScript的流程控制语句.. 7

4 rhapsody中的JavaScript 10

4.1 常见的消息属性.. 10

4.2 常见的消息方法.. 10

4.3 常见的公共方法.. 11

4.4综合案例... 11

1前言

暂无

2 JavaScript简介

了解或接触过前端开发的同事应该都清楚,前端的三大基础为HTML、CSS、JavaScript,这三大基础在前端中分别起到如下的作用:

  • HTML:网页的内容主体,内容的来源
  • CSS:控制网页的样式和布局
  • JavaScript:增强交互,增强用户体验,让网页“动”起来

2.1概念及作用

JavaScript是一门脚本语言,运行在客户端浏览器中的。每一个浏览器都有JavaScript的解析引擎,不需要编译,直接就可以被浏览器解析执行。主要作用是可以来增强用户和html页面的交互过程,可以来控制html元素,让页面有一些动态的效果,增强用户的体验。

2.2发展史

  • 1992年,Nombase公司,开发出第一门客户端脚本语言,专门用于表单的校验。命名为 : C--,后来更名为:ScriptEase
  • 1995年,Netscape(网景)公司,开发了一门客户端脚本语言:LiveScript。后来,请来SUN公司的专家,修改LiveScript,命名为JavaScript
  • 1996年,微软抄袭借鉴JavaScript开发出JScript语言
  • 1997年,ECMA(欧洲计算机制造商协会),制定出客户端脚本语言的标准:ECMAScript,就是统一了所有客户端脚本语言的编码方式。

结合上述的发展史,其实可以简单的理解JavaScript = ECMAScript + JavaScript自己特有的东西(BOM+DOM)。而本次需要分享的内容,也就是ECMAScript。

3 JavaScript语法

3.1学习准备

IDE选择:在学习阶段根据个人需要,可以直接使用文本编辑器如记事本、notepad++等,也可以使用WebStorm(比较臃肿,不推荐使用)、Visual Studio Code(推荐)。

参考资料:推荐w3cchool,链接为:https://www.w3school.com.cn/js/index.asp

前置知识:建议自行在w3cchool了解关于HTML的基础知识,预计耗时为60分钟左右。如果具备一定基础,请忽略。

3.2 JavaScript与HTML结合

  • 内部JS:定义<script>,标签体内容就是js代码

<!DOCTYPE html>

<html>

<body>

<h1>A Web Page</h1>

<p id="demo">一个段落</p>

<button type="button" οnclick="myFunction()">试一试</button>

<script>

function myFunction() {

document.getElementById("demo").innerHTML = "段落被更改。";

}

</script>

</body>

</html>

  • 外部JS:定义<script>,通过src属性引入外部的js文件

<script src="myScript.js"></script>

注意: <script>可以定义在html页面的任何地方。但是定义的位置会影响执行顺序;<script>可以定义多个。

3.3 JavaScript注释及命名规则

  • 单行注释://注释内容    多行注释:/*注释内容*/
  • 分号用于一行语句的结束,如果一行只有一条语句则可以省略,但是不推荐省略分号
  • { } 用于包裹代码块
  • JavaScript中大小写敏感
  • 推荐命名规则:

可包含字母、数字、下划线和美元符号

名称也可以 $ 和 _ 开头(但是不推荐)

推荐命名为小驼峰命名,如:firstName, lastName, masterCard, interCity

3.4 JavaScript中原始数据类型

  • number:数字。 整数/小数/NaN(not a number 一个不是数字的数字类型)
  • string:字符串。 字符串  "abc" "a" 'abc'
  • boolean: true和false
  • null:一个对象为空的占位符
  • undefined:未定义。如果一个变量没有给初始化值,则会被默认赋值为undefined
  • 引用数据类型:即对象

3.5 JavaScript中变量

变量是指一小块存储数据的内存空间,java是强类型语言,JavaScript是弱类型语言。强类型语言:在开辟变量存储空间时,定义了空间将来的数据的数据类型,只能存储固定类型的数据;弱类型语言:在开辟变量存储空间时,不定义空间将来 数据的数据类型。能存储任意类型的数据;JavaScript中可以使用typeof运算符返回变量的类型。

变量定义的语法:

var  变量名=变量值;

3.6 JavaScript中运算符

1)一元运算符:只有一个运算数的运算符

++,-- , +(正号)

++ --: 自增(自减)

++(--) 在前,先自增(自减),再运算

++(--) 在后,先运算,再自增(自减)

+(-):正负号

注意:在JS中,如果运算数不是运算符所要求的类型,那么js引擎会自动的将运算数进行类型转换。string转number:按照字面值转换。如果字面值不是数字,则转为NaN(不是数字的数字);boolean转number:true转为1,false转为0

2). 算数运算符

+ 加

- 减

* 乘

/ 除

% 求余

3)赋值运算符

=

+=

4)比较运算符

> 大于

< > 不等于

<= 小于等于

>= 大于等于

== 等于:类型相同:直接比较;字符串:按照字典顺序比较。按位逐一比较,直到得出大小为止。类型不同:先进行类型转换,再比较。

=== 全等于:全等于。在比较之前,先判断类型,如果类型不一样,则直接返回false

5)逻辑运算符

&& 与

||  或

!   非

注意:其他类型转boolean: number:0或NaN为假,其他为真; string:除了空字符串(""),其他都是true;null&undefined:都是false;对象:所有对象都为true。

6)三元运算符

  语法:表达式? 值1:值2;

  判断表达式的值,如果是true则取值1,如果是false则取值,使用示例如下:

var c = a > b ? 1:0;

3.7 JavaScript常见的输出语法

  • 使用 window.alert() 写入警告框
  • 使用 document.write() 写入 HTML 输出
  • 使用 innerHTML 写入 HTML 元素
  • 使用 console.log() 写入浏览器控制台

3.7 JavaScript的关键字

关键词

描述

break

终止 switch 或循环。

continue

跳出循环并在顶端开始。

debugger

停止执行 JavaScript,并调用调试函数(如果可用)。

do ... while

执行语句块,并在条件为真时重复代码块。

for

标记需被执行的语句块,只要条件为真。

function

声明函数。

if ... else

标记需被执行的语句块,根据某个条件。

return

退出函数。

switch

标记需被执行的语句块,根据不同的情况。

try ... catch

对语句块实现错误处理。

var

声明变量。

3.8 JavaScript的流程控制语句

  • if...else...

语法:

if (条件 1) {

条件 1 为 true 时执行的代码块

} else if (条件 2) {

条件 1 为 false 而条件 2 为 true 时执行的代码块

} else {

条件 1 和条件 2 同时为 false 时执行的代码块

}

  • Switch

如果 JavaScript 遇到 break 关键词,它会跳出 switch 代码块。此举将停止代码块中更多代码的执行以及 case 测试。如果找到匹配,并完成任务,则随机中断执行(break)。无需更多测试。break 能够节省大量执行时间,因为它会“忽略” switch 代码块中的其他代码的执行。不必中断 switch 代码块中的最后一个 case。代码块在此处会自然结束。

语法:

switch(表达式) {

case n:

代码块

break;

case n:

代码块

break;

default:

默认代码块

}

  • While

while 循环会一直循环代码块,只要指定的条件为 true。

语法:

while (条件) {

要执行的代码块

}

注意:如果while (条件)中的条件永远是true,那么这个循环则永远不会结束,请不要在rhapsody使用类似语法。

  • do...while

do/while 循环是 while 循环的变体。在检查条件是否为真之前,这种循环会执行一次代码块,然后只要条件为真就会重复循环。

语法:

do {

要执行的代码块

}

while (条件);

  • for

语法:

for (语句 1; 语句 2; 语句 3) {

要执行的代码块

}

综合使用示例,打印九九乘法表:

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>99乘法表</title>

<style>

td{

border: 1px solid;

}

</style>

<script>

document.write("<table  align='center'>");

//1.完成基本的for循环嵌套,展示乘法表

for (var i = 1; i <= 9 ; i++) {

document.write("<tr>");

for (var j = 1; j <=i ; j++) {

document.write("<td>");

//输出  1 * 1 = 1

document.write(i + " * " + j + " = " + ( i*j) +"&nbsp;&nbsp;&nbsp;");

document.write("</td>");

}

/*//输出换行

document.write("<br>");*/

document.write("</tr>");

}

//2.完成表格嵌套

document.write("</table>");

</script>

</head>

<body>

</body>

</html>

4 rhapsody中的JavaScript

引擎中对于消息、过滤器等内置了大量的JavaScript属性和方法。

4.1 常见的消息属性

  • text:字符类型的消息内容,如果消息体是xml格式时,其字符集为UTF-8,否将使用缺省的字符集
  • body:字节数组类型,消息的内容。
  • bodyEncoding:消息体的字符集,如果设置了不存在的字符集,那么将消息将使用系统缺省字符集。
  • xml:消息的xml对象

4.2 常见的消息方法

  • setText(string body, string encoding):设置消息体,第一个参数为消息内容的字符串,第二个参数为字符集。第二个参数可以省略,但是通常我们执行为UTF8
  • addError(string error):为消息设置一个错误,这样会使消息进入错误队列
  • setProperty(string propertyName, string value):设置消息的属性,第一个参数为消息的属性名称,第二个参数为属性值。
  • getProperty(string propertyName):获取指定属性名的属性值。
  • getField(string fieldPath):获取指定路径的消息内容,通常用于xml消息指定xpath解析内容
  • getText(string encoding):以指定的字符集获取消息体
  • getErrors():获取错误描述信息
  • getBodySize():获取消息大小,单位为bytes

4.3 常见的公共方法

  • generateUuid():获取UUID
  • dateChangeFormat(string dateTimeString, string oldFormat, string newFormat):对日期时间字符串格式化
  • getVariable(variableName[, decryptVariable]):获取公共变量的值
  • decodeBase64(base64encodedString):对base64编码的字符串解码
  • decodeBase64(value[, encoding]):对base64编码的字符串以指定的字符集解码
  • encodeBase64(value[, chunked[, encoding]]):对字符串以指定的字符集编码

4.4综合案例

需求:需要将xml消息按时间相同拆分

输入消息如下:

<INPUT>

<LIST>

<OccurrenceDT>2020-05-18 07:00:00</OccurrenceDT>

<Names>体温</Names>

</LIST>

<LIST>

<OccurrenceDT>2020-05-18 07:00:00</OccurrenceDT>

<Names>心率(HR)</Names>

</LIST>

<LIST>

<OccurrenceDT>2020-05-18 08:00:00</OccurrenceDT>

<Names>血氧饱和度(SPO2)</Names>

</LIST>

<LIST>

<OccurrenceDT>2020-05-18 08:00:00</OccurrenceDT>

<Names>呼吸(R)</Names>

</LIST>

<LIST>

<OccurrenceDT>2020-05-18 09:00:00</OccurrenceDT>

<Names>心率(HR)</Names>

</LIST>

<LIST>

<OccurrenceDT>2020-05-18 09:00:00</OccurrenceDT>

<Names>呼吸(R)</Names>

</LIST>

</INPUT>

要求输出消息为如下三条:

<INPUT>

<Names>体温</Names>

<OccurrenceDT>2020-05-18 07:00:00</OccurrenceDT>

<Names>心率(HR)</Names>

<OccurrenceDT>2020-05-18 07:00:00</OccurrenceDT>

</INPUT>

<INPUT>

<Names>血氧饱和度(SPO2)</Names>

<OccurrenceDT>2020-05-18 08:00:00</OccurrenceDT>

<Names>呼吸(R)</Names>

<OccurrenceDT>2020-05-18 08:00:00</OccurrenceDT>

</INPUT>

<INPUT>

<Names>心率(HR)</Names>

<OccurrenceDT>2020-05-18 09:00:00</OccurrenceDT>

<Names>呼吸(R)</Names>

<OccurrenceDT>2020-05-18 09:00:00</OccurrenceDT>

</INPUT>

JavaScript过滤器中的实现如下:

var count=input[0].getRepeatCount("/INPUT/LIST/OccurrenceDT");//取LIST循环次数

var tempDate='';   //临时变量,记录上一次的发生时间

var body='';  //临时变量,缓存消息体

for(i=0;i<count;i++)

{

var OccurrenceDT = input[0].getField("/INPUT/LIST["+(i+1)+"]/OccurrenceDT");

var Names = input[0].getField("/INPUT/LIST["+(i+1)+"]/Names");

if (i==0) {

//第一次循环,初始化时间临时变量,并缓存消息体,但是不需要生成一次消息,下一次循环判断后处理

tempDate=OccurrenceDT;

body='<Names>'+Names+'</Names><OccurrenceDT>'+OccurrenceDT+'</OccurrenceDT>';

}

else{

//非第一次循环

//一共两种情况,要么和上一次时间相等,要么不等

//如果相等,就继续拼接消息体,但是不生成新的消息

if (OccurrenceDT==tempDate){

body=body+'<Names>'+Names+'</Names><OccurrenceDT>'+OccurrenceDT+'</OccurrenceDT>';

//如果是最后一次,那么直接返回

if(i==count-1){

var next = output.append(input[0]);

next.setText('<INPUT>'+body+'</INPUT>','UTF8');

}

}

//如果不相等,生成新的消息,并重置缓存的消息体,并重置缓存的时间

else{

var next = output.append(input[0]);

next.setText('<INPUT>'+body+'</INPUT>','UTF8');

body='<Names>'+Names+'</Names><OccurrenceDT>'+OccurrenceDT+'</OccurrenceDT>';

tempDate=OccurrenceDT;

//如果是最后一次,那么直接返回

if(i==count-1){

var next = output.append(input[0]);

next.setText('<INPUT>'+body+'</INPUT>','UTF8');

}

}

}

}

JavaScript入门及rhapsody中使用相关推荐

  1. 经典的JavaScript入门书

    经典的 JavaScript 入门书 --<JavaScript基础教程(第7版)> 原版销售累计超过 150 000 册! 欢迎你使用 JavaScript !使用这种容易上手的程序设计 ...

  2. 原版销售累计超过150 000册的经典JavaScript入门书

    媒体评论 如果你要学习 JavaScript,本书绝对不容错过. --JavaScript.about.com 一本伟大的 JavaScript入门书!适合初级程序员和 Web设计师. --Amazo ...

  3. 《jQuery与JavaScript入门经典》——2.6 小结

    本节书摘来自异步社区<jQuery与JavaScript入门经典>一书中的第2章,第2.6节,作者:[美]Brad Dayley著,更多章节内容可以访问云栖社区"异步社区&quo ...

  4. 《jQuery与JavaScript入门经典》——第 1 章 动态Web编程简介 1.1理解Web服务器浏览器范式...

    本节书摘来自异步社区<jQuery与JavaScript入门经典>一书中的第1章,第1.1节,作者:[美]Brad Dayley著,更多章节内容可以访问云栖社区"异步社区&quo ...

  5. JavaScript入门经典(第4版)

    循序渐进精细讲解所有JavaScript知识点 指导您构建建出神入化的完美Web应用程序 JavaScript入门经典(第4版) 基本信息 原书名: Beginning JavaScript 原出版社 ...

  6. 《JavaScript入门经典(第6版)》——2.7 问答

    本节书摘来自异步社区<JavaScript入门经典(第6版)>一书中的第2章,第2.7节,作者: [美] Phil Ballard 译者:李 军陈冀康,更多章节内容可以访问云栖社区&quo ...

  7. JavaScript入门【JavaScript专题1】

    JavaScript入门 从今天开始就与大家一起学习JavaScript了 在本系列教程中,您将学习如何制作 JavaScript 驱动的网页. JavaScript 入门 在这里,您将了解使用 Ja ...

  8. JavaScript入门(part12)--内置对象

    学习笔记,仅供参考,有错必纠 参考自:pink老师教案 文章目录 JavaScript入门 内置对象 Math对象 日期对象 数组对象 字符串对象 JavaScript入门 内置对象 Math对象 ​ ...

  9. JavaScript入门(part11)--对象

    学习笔记,仅供参考,有错必纠 参考自:pink老师教案 文章目录 JavaScript入门 对象 创建对象的三种方式 利用字面量创建对象 利用 new Object 创建对象 利用构造函数创建对象 n ...

最新文章

  1. 汇总Javascript各种判断脚本(javascript经典例子)
  2. Nginx实现负载均衡时常用的分配服务器策略
  3. 前端学习(1285):node运行环境安装
  4. linux的多任务编程-线程池,Linux的多任务编程-线程池
  5. [bzoj3585] Rmq Problem / mex
  6. React 组件间通讯
  7. each iteration和 each occurrunce的区别
  8. 分享117个PHP源码,总有一款适合你
  9. C语言判断一个数是奇数还是偶数
  10. 【BZOJ4049】[Cerc2014] Mountainous landscape(线段树+凸包+二分)
  11. linux文件系统知识总结、SD卡挂载问题总结
  12. Zookeeper:Zookeeper的主从选举机制
  13. java的springboot项目操作阿里云OSS下载文件、查看文件内容、上传文件,自定义工具类
  14. 在已安装win10环境中利用EasyBCD引导安装Ubuntu16.04-小白补充
  15. 极光小课堂 | 极光推送之 Android 客户端使用指南——基础篇
  16. 【功能安全(ISO 26262)系列】番外篇 第一话 戏说汽车安全是个什么鬼
  17. Window VMware MAC OS 安装
  18. 如何开发一个简单的智能对话查询工具
  19. 药企常用计算机化系统,GMP附录《计算机化系统》法规解读之“对制药企业的影响”...
  20. modbus从机模拟软件:modbus Slave和modsim

热门文章

  1. 制作网页头部固定悬浮的导航栏
  2. F - Anti-Rhyme Pairs(rmq算法模板)(后缀数组算法模板)
  3. win7 64位 web项目OCX控件无法加载原因
  4. LVS 负载均衡集群详细介绍
  5. 保护隐私文件的四种方法及对比
  6. 解决 HP Deskjet 1000 打印字体模糊
  7. 如何清洗和保养工业相机
  8. go语言生成指定个数数字验证码
  9. 运维“打怪”晋级之路之中级篇
  10. 前端 JS 打印 WORD/EXCEL PDF