目录
- 1. 变量声明
- 2. 基本数据类型
- 3.复杂数据类型
- 4.字符串方法
- 5.对象方法
- 6.时间方法
- 7.条件(if)
- 8.循环(for/while)
- 9.遍历(for in/of)
- 10.多选(Switch)
- END
1. 变量声明
- const:除非变量需要重新赋值(优先使用 )——
const a=true;
- let:需要修改值时使用{大括号内用}(其次使用)——
let b="hello"
- var:除非维护旧代码(避免使用 )——
var c={ name:'XX',age:10 };
- 备注:
console.log()
; //控制台输出日志
var a = true; //旧的声明方法
console.log(a);function b(){let b="klxx"; //let 变量声明只在当前括号内有效console.log(b);
}
b();const c = 100; //常数声明(不可重复赋值)
2. 基本数据类型
获取数据类型: typeof(value)
- string
- boolean
- number
- null
- undefined
数据类型转换
- 转字符串:
tosSring()
//方法【S大写】 - 转数值:
parseint(value)
、parsefloat(value)
- 强制转换:
Boolean(value)
、number(value)
msg.payload = JSON.parse(msg.payload)
转换为JSON格式对象
let a = 1;
msg.payload = typeof(a); //获取数据类型let b = true;
msg.payload = b.toString(); //转换成字符串【大写S】let c = "12.5.5";
msg.payload = parseInt(c); //转换成数值
msg.payload = parseFloat(c);let d = "wo";
msg.payload = Boolean(d); //强制转换(有值为true,空为false)
3.复杂数据类型
数据与对象的区别:
- 数组是规定索引,自填元素;对象是自定义索引,值
数组(array) [元素1,元素2,…]
- 数组声明:
let/var a=[];
/msg.arr=[];
//逗号分割 - 元素添加:
msg.arr.push("wo")
//添加在最后; / .unshift(“wo”) //添加到最前 - 元素删除:
msg.arr.shift()
//方法:删除第一个元素; - 元素修改:
msg.arr[1]
= “wo”; //修改1索引的元素 - 返回索引:
msg.arr.indexOf(元素值)
//返回值的索引 【大写O】
msg.arr1 = []; //数组声明msg.arr1[3] = 88; //修改元素
msg.arr1.push(33); //最后添加msg.arr1.unshift(23); //最前添加
msg.arr1.shift(); //删除第一个msg.payload = msg.arr1.indexOf(33); //indexOf【O:大写】返回索引for(var i=1;i<msg.arr1.length;i++){//遍历数组
}
对象(object) {属性名:属性值,…}
- 声明对象:
let obj1 = { "name":"小小","age":23}
- 数据获取:
msg.payload = obj1.name
/ obj1[“name”] - 对象添加:
obj1.name = "小明"
/obj1.gender = "男"
//存在即更改,无则添加 - 对象删除:1.
delete obj1[age]
//删除元素;2.obj1.age=null
; //只删除值 - 特点:
msg.obj1 = msg.obj2
//赋值对象2到对象1
let obj1 = {"name":"小明","age":23
}let obj2 = {"name":"小画","age":21
}obj1.age1 = 25; //增加键值对delete obj1.age; //删除键值对obj1 = obj2; //对象赋值msg.payload = obj1 === obj2; //相等返回truereturn msg;
函数(function)
- 创建函数:
function a(a,b,c) { a+b+c }
//有函数名;var fn = function() { }
//无函数名 - 函数调用:
a(1,2,3)
- 形参:创建函数后定义的变量
a,b,c
(寄存器) - 实参:调用函数时定义的值
1,2,3
(具体值) - 返回值:
return msg
; //返回当前function函数块的msg对象,通过某一变量(Payload)来接收 break
:跳出循环,执行一下跳continue
:跳出本次循环,执行下一循环
function a(a,b,c){ let s = a+b+c;msg.payload = s; //通过Payload变量接收
}
a(1,2,3)
return msg; //返回当前对象
4.字符串方法
常用的方法对字符串进行操作
- 分割:
split(分隔符)
//指定分隔符,分割成字符数组 - 截取:
slice(开始索引,结束索引)
//截取一段字符 - 替换:
replace(“原字符”,“替换字符”)
//替换某个字符 - 合并:
concat(字符1,字符2)
//合并字符 - 提取索引:
indexOf(“字符”)
- 提取字符:
charAt(索引)
let str1 = "中华人民共和国";
let str2 = "中华人民共和国,中国人民万岁";
let str3 = "";
// msg.payload = str1.charAt(3); 提取索引3的字符
// msg.payload = str1.indexOf("共"); 提取字符共的索引
// msg.payload = str2.lastIndexOf("中"); 提取最后字符中的索引
// msg.payload = str3.concat(str1,str2); 合并字符
// msg.payload = str2.split(","); 用,分割成2个字符串数组
// msg.payload = str2.slice(0,2); 从0截取2个字符
msg.payload = str1.replace("华人民共和",""); //替换字符
return msg; //返回当前对象
5.对象方法
对象数据的常用方法
- 获取所有键:
Object.key(对象)
- 获取所有值:
Object.Value(对象)
- 对象转换成数组:
Object.entries(对象)
- 是否含有特定键:
obj1.hasOwnProperty(“特定键”)
- 遍历对象
let obj = {"a":123,"b":12.3,"c":"wo","d":[1,"wo",3]
}// msg.payload = obj.hasOwnProperty("e"); 是否含有特定键
// msg.payload = Object.keys(obj); 获取对象的所有键
// msg.payload = Object.values(obj); 获取对象的所有值
//msg.payload = Object.entries(obj); 对象转换数组function a(){this.a = "456",this.b = [1,333]
}
let b = new a();
a.prototype.e = 89; //添加新的键e,值89(原型a()中无)
for(var i in b){console.log( i +" " + b[i]) //控制台遍历对象
}
return msg; //返回当前对象
6.时间方法
获取系统时间
let time1 = new Date(); //获取系统时间
let year = time1.getFullYear(); //年
let mouth = time1.getMonth()+1; //月份为0-11【需+1】
let day = time1.getDay(); //日
let h = time1.getHours(); //时
let m = time1.getMinutes(); //分
let s = time1.getSeconds(); //秒
let ms = time1.getMilliseconds(); //毫秒
let time2 = year+"-"+mouth+"-"+day+" "+h+":"+m+":"+":"+s+":"+ms;
msg.payload = time2;
return msg; //返回当前对象
7.条件(if)
语法
if(){
}else if (){
}else{
}
运算符
- !:非
- ||:或
- &&:与
- ===:绝对等于
8.循环(for/while)
区别:
for(){}
:先检查条件,再执行(遍历数组、固定次数循环)while(){}
:先检查条件,再执行(条件未知<如持续监听>)do{} while()
:先执行,再检查条件(至少执行一次<如输入验证>)
语法:
for(){
continue;
}
-----
let XXX
while(){
}
-----
let XXX
do {
}while()
示例:
// for循环:明确次数
for (let i = 0; i < 5; i++) { console.log(i); // 输出0-4
} // while循环:条件未知
let flag = true;
while (flag) { flag = Math.random() > 0.5; // 随机退出
} // do while循环:至少执行一次
let input;
do { input = prompt("输入Y/N:");
} while (input !== "Y" && input !== "N");
9.遍历(for in/of)
区别:
for...in
:遍历对象键名(属性),用于对象(可枚举)for...of
:遍历可迭代值(元素),用于数组/字符串等(可迭代亦可枚举)
语法:
for (let i in obj1){
}
for (let i of arr1\str1){
}
示例:
let str1 = "wo men zui bang"
let arr1 = [1,2,3,5,5,5,9,8]
let abj1 = {"a":1,"b":"san","c":[5,6]}//=====for in==== 用作遍历对象;不能遍历数组
for (let i in abj1){console.log(abj1[i]) //获取对象值、键
}//=====for of==== 用作遍历数组、字符串;不能遍历对象
for (let i of arr1){console.log(i)
}let arr2 = []
for (let i of str1){arr2.push(i) //字符串准换数组
}
msg.payload = arr2return msg;
10.多选(Switch)
区别:
if
:多条件逻辑判断(范围、复杂条件)switch
:单变量多分支精确匹配(值明确,多分支枚举)对象和数据不建议用- switch 必须加
break
(除非刻意穿透) - default 建议放末尾,提升可读性,放中间后边需加break!
语法:
switch (变量、数字、字符串、表达式){case "s"://语句break;...default://语句
}
示例:
let str1 = msg.payload;
switch(str1){case "21Bap01" :console.log("确认21Bap01?")breakcase "21Bap02" :console.log("确认21Bap02?")breakdefault:console.log("重新选择!")
}return msg;