node-red教程 4 JS基础

  由于函数控件中总归是需要写一些代码的,这些代码都基于JS,所以在这里补充一点JS的基础知识。如果有JS基础,可以跳过。如果没有JS基础,并且看不懂,也可以跳过——等到确实需要的时候,再回来翻看一下。
篇幅限制,此处不能把JS的基础全部覆盖,我挑选了一些我认为有用的知识写在这里。由于我并不是前端工程师,所以这篇文章东拼西凑的,见谅。

4.1 变量和变量赋值

  变量声明如下:
1. var myFirstVar;

  声明可以由逗号分隔在同一行:
2. var myFirstVar, mySecondVar;

  它们被指派一些初始值使用=操作符。
3. var myFirstVar = 0;

4.2 对象

  1.Date对象用于处理日期和时间。
  创建Date对象的语法:
4. var myDate = new Date();//Date对象会自动把当前日期和时间保存为其初始值。
  Date对象属性:
Constructor : 返回对创建此对象的Date函数的引用
Prototype : 使您有能力向对象添加属性和方法。
Date对象的方法:
方法 描述
  Date()
  返回当日的日期和时间。
  getDate()
从 Date 对象返回一个月中的某一天 (1 ~ 31)。
  getDay()
从 Date 对象返回一周中的某一天 (0 ~ 6)。
  getMonth()
从 Date 对象返回月份 (0 ~ 11)。
  getFullYear()
从 Date 对象以四位数字返回年份。
  getYear()
请使用 getFullYear() 方法代替。
  getHours()
返回 Date 对象的小时 (0 ~ 23)。
  getMinutes()
返回 Date 对象的分钟 (0 ~ 59)。
  getSeconds()
返回 Date 对象的秒数 (0 ~ 59)。
  getMilliseconds()
返回 Date 对象的毫秒(0 ~ 999)。
  getTime()
返回 1970 年 1 月 1 日至今的毫秒数。
  getTimezoneOffset()
返回本地时间与格林威治标准时间 (GMT) 的分钟差。
  getUTCDate()
根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。
  getUTCDay()
根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。
  getUTCMonth()
根据世界时从 Date 对象返回月份 (0 ~ 11)。
  getUTCFullYear()
根据世界时从 Date 对象返回四位数的年份。
  getUTCHours()
根据世界时返回 Date 对象的小时 (0 ~ 23)。
  getUTCMinutes()
根据世界时返回 Date 对象的分钟 (0 ~ 59)。
  getUTCSeconds()
根据世界时返回 Date 对象的秒钟 (0 ~ 59)。
  getUTCMilliseconds()
根据世界时返回 Date 对象的毫秒(0 ~ 999)。
  parse()
返回1970年1月1日午夜到指定日期(字符串)的毫秒数。
  setDate()
设置 Date 对象中月的某一天 (1 ~ 31)。
  setMonth()
设置 Date 对象中月份 (0 ~ 11)。
  setFullYear()
设置 Date 对象中的年份(四位数字)。
  setYear()
请使用 setFullYear() 方法代替。
  setHours()
设置 Date 对象中的小时 (0 ~ 23)。
  setMinutes()
设置 Date 对象中的分钟 (0 ~ 59)。
  setSeconds()
设置 Date 对象中的秒钟 (0 ~ 59)。
  setMilliseconds()
设置 Date 对象中的毫秒 (0 ~ 999)。
  setTime()
以毫秒设置 Date 对象。
  setUTCDate()
根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。
  setUTCMonth()
根据世界时设置 Date 对象中的月份 (0 ~ 11)。
  setUTCFullYear()
根据世界时设置 Date 对象中的年份(四位数字)。
  setUTCHours()
根据世界时设置 Date 对象中的小时 (0 ~ 23)。
  setUTCMinutes()
根据世界时设置 Date 对象中的分钟 (0 ~ 59)。
  setUTCSeconds()
根据世界时设置 Date 对象中的秒钟 (0 ~ 59)。
  setUTCMilliseconds()
根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。
  toSource()
返回该对象的源代码。
  toString()
把 Date 对象转换为字符串。
  toTimeString()
把 Date 对象的时间部分转换为字符串。
  toDateString()
把 Date 对象的日期部分转换为字符串。
  toGMTString()
请使用 toUTCString() 方法代替。
  toUTCString()
根据世界时,把 Date 对象转换为字符串。
  toLocaleString()
根据本地时间格式,把 Date 对象转换为字符串。
  toLocaleTimeString()
根据本地时间格式,把 Date 对象的时间部分转换为字符串。
  toLocaleDateString()
根据本地时间格式,把 Date 对象的日期部分转换为字符串。
  UTC()
根据世界时返回 1970 年 1 月 1 日 到指定日期的毫秒数。
  valueOf()
返回 Date 对象的原始值。

  Array对象:
创建Array数组对象的语法:
5. New Array();
6. New array(size);
7. New array(element0,element1,…….,element);

  参数:
  参数 size 是期望的数组元素个数。返回的数组,length 字段将被设为 size 的值。
  参数 element …, elementn 是参数列表。当使用这些参数来调用构造函数 Array() 时,新创建的数组的元素就会被初始化为这些值。它的 length 字段也会被设置为参数的个数。
  返回值:
  返回新创建并被初始化了的数组。
  如果调用构造函数 Array() 时没有使用参数,那么返回的数组为空,length 字段为 0。
  当调用构造函数时只传递给它一个数字参数,该构造函数将返回具有指定个数、元素为 undefined 的数组。
  当其他参数调用 Array() 时,该构造函数将用参数指定的值初始化数组。
  当把构造函数作为函数调用,不使用 new 运算符时,它的行为与使用 new 运算符调用它时的行为完全一样。

  Array对象方法:
方法 描述
  concat()
连接两个或更多的数组,并返回结果。
  join()
把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。
  pop()
删除并返回数组的最后一个元素
  push()
向数组的末尾添加一个或更多元素,并返回新的长度。
  reverse()
颠倒数组中元素的顺序。
  shift()
删除并返回数组的第一个元素
  slice()
从某个已有的数组返回选定的元素
  sort()
对数组的元素进行排序
  splice()
删除元素,并向数组添加新元素。
  toSource()
返回该对象的源代码。
  toString()
把数组转换为字符串,并返回结果。
  toLocaleString()
把数组转换为本地数组,并返回结果。
  unshift()
向数组的开头添加一个或更多元素,并返回新的长度。
  valueOf()
返回数组对象的原始值

4.3 类型

JavaScript支持各种类型如下:
JavaScript支持的基本类型
8. var anInt = 0; //int类型
9. var aFloat = 2.5;//浮点型
10. var aBoolean = true;//布尔型(true , false)
11. var aString = “This is a string”; //支付串
12. var anArray =(1、2、3); //数组
13. var anObjectLiteral =
14. {
15. someField :“Some value”
16. };
17. Var aFunction= function(){返回;};/ /函数
18. var re = / ab + c /;/ /正则表达式

您可以使用这样的新运算符实例化对象:
19. var aDate = new Date();

4.4 注释

注释可以使用双斜杠单行或c风格的多行注释的格式:
20. / /这是一行注释
21. /*
22. 这是一个多行注释23. */

4.5 基本运算符

内置的数值运算符包括通常的:+(加),(减法),/(部门)*(乘法),%(模)。
24. var a = 6;
25. a= + 1;/ /a是7
26. b = b % 2;/ / b是3
27. a+ +;/ /a是8
28. a-;/ /a是7
29. a+ = 3;/ /a是10

字符串可以连接如图所示:
30. var aString = “The value of a is ” + a;
31. var greeting = “What a very “;
32. greeting += “nice day”;

typeofoperator返回一个变量的类型。
33. typeof aString;/ /返回“字符串”

确定对象的类,例如区分数组和其他对象,对象。toStringmethod可以使用如下:
34. Object.prototype.toString.call(new Date()); / /“data对象”
35. Object.prototype.toString.call([1,2,3]);/ / “(对象数组)
36. Object.prototype.toString.call({someField:12}); / /“对象对象”
37. Object.prototype.toString.call(function(){return;});/ / “(目标函数)

4.6 toString方法

toString() 方法可把数组转换为字符串,并返回结果。
语法:
ArrayObject.toString()

返回值:
ArrayObject 的字符串表示。返回值与没有参数的 join() 方法返回的字符串相同。

实例:

Var arr = new array(3)
Arr[0] = “George”
Arr[1] = “John”
Arr[2] = “Thomas”
Document.write(arr.toString())

输出:
George,John,Thomas

4.7 条件

您可以使用比较运算符,<(小于)>(大于)< =(小于或等于)> =(大于或等于)= =(等于)! =(不等于)ifstatements如下:
38. var = 1;
39. var b =null;(null为空)
40. if(a> 0){
41. b =“大于零”;
42. }else {
43. b =“是零或更少”;44. }

4.8 循环

Javascript支持for循环 and while循环:
45. for (var i= 0 ; i< anArray.length; i + +)
46. {
47. console.log(myArray[i]);
48. }
49. while (x < 10)
50. {
51. console.log(x + +);52. }

4.9 函数

1创建函数
调用一个函数,你可以调用如下:
53. function addOne(x){
54. return x+1
55. }
56. var y = addOne(5);/ / y = 6

或者,如果函数是对象的一个方法,例如一个日期对象
57. var d = new Date();
58. var year= d.getMonth();/ /一月为0,二月为一

2.parseInt()
parseInt()函数可解析一个字符串,并返回一个整数。创建paseInt函数:
parseInt(String , radix);
String :必须,要被解析的字符串。
Radix:可选。表示要解析的数字的基数。该值介于2~36之间。如果省略该参数或其值为0,则数字将以10为基础来解析。如果它以“0x”或“0X”开头,将以16为基数。如果该参数小于2或者大于36,则parseInt()将返回NaN.

例如:
59. parseInt(“10”); //返回 10
60. parseInt(“19” , 10) ; //返回19(10+9)
3.parse()
3.parse() 方法可解析一个日期时间字符串,并返回 1970/1/1 午夜距离该日期时间的毫秒数。
语法:
Date.parse(datestring);
参数:
Datestring : 必须。表示日期和时间的字符串。
返回值:
指定的日期和时间剧19701/1午夜(GMT时间)之间的毫秒数。
说明:
该方法是 Date 对象的静态方法。一般采用 Date.parse() 的形式来调用,而不是通过 dateobject.parse() 调用该方法。

实例:
在本例中,我们将取得从1970/01/01到2005/07/08的毫秒数:
61.
62.
63. var d = Date.parse("Jul 8, 2005")
64. document.write(d)

66. 输出:
67. 1120752000000

4.10 回调

node.Js是一个基于事件的框架,只有一个执行线程。要允许在执行i/o或等待计时器过期时执行多个任务,将广泛使用回调。例如,要在2秒钟后将“完成”登录到控制台,可以使用匿名函数回调如下:
68. setTimeout(函数(){ console.log(“做”);},2000);

您可以使用函数来处理数组:
69. var friends = [“mike”,”roberto”, “rodger”, “ted”, “daniel”];//实例化一个朋友数组
70. friends.forEach(function (eachName,index){//循环遍历名字
71. console.log (index + 1 +”.“+ eachName);/ / 1. mike 2. roberto 3. rodger 4. ted 5. daniel 72. });

4.11 异常处理

异常处理代码中可以用来捕获错误。这样做,你的代码封装在一个try / catch块。
73. try {
74. // try to do something需要处理的代码
75. }catch (e){
76. // handle errors 捕获的错误
77. }finally {
78. // this block is always executed regardless of whether there was an exception无论是否有异常,这个块总是执行。
79. }

4.12 Context (上下文)

  JavaScript中的“上下文” 指的是什么:
上下文是从英文context翻译过来,指的是一种环境。
  在软件工程中,上下文是一种属性的有序序列,他们为驻留在环境内的对象定义环境。
  在对象的激活过程中创建上下文,对象被配置为要求某些自动服务,如同步,事务,实时激活,安全性等等。又比如计算机技术中,相对于进程而言,上下文就是进程执行时的环境。
  具体来说就是各个变量和数据,包括所有的寄存器变量,进程打开的文件,内存信息等。
  JavaScript的执行上下文的理解是一种大概模糊的理解。
  上下文原意是content,
  Content指的是函数被调用的时候,查看this指向那个object,那么那个object就是当前的“上下文”。
总之我的理解就是:当前执行环境的作用域,因为“上下文”如果离开了执行环境就没有啥实际意义了。

你可能感兴趣的:(node-red)