node学习前的准备-node.js初级
Posted henu_GM
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node学习前的准备-node.js初级相关的知识,希望对你有一定的参考价值。
Nvm的安装:
对于node来说,他有太多的版本了,而在各个项目的开发中,各种node版本都可能应用,所以要运行这些不同版本的项目,能够快速切换本机node的版本是很重要的,Nvm的作用就是完美的管理我们本地的node版本,达到快速切换的效果
详细安装过程搜其他相关博客。
ES6语法:
首先要会用 let 来代替var
var的缺点:
1、var声明的变量有预解析,容易造成逻辑混乱,可以先在前面使用,再在后面声明。
2、var 可以重复定义同一个变量,造成逻辑错误,第二吃重新定义变量应该是修改,而不是定义
3、var 用在for循环条件中,会造成for循环的污染问题
4、var 声明的变量没有块级作用域
let的优点:
1、let声明的变量没有预解析,不会有变量提升
2、let不可以重复定义同一个变量
3、let在for循环中不会污染
4、let声明的变量有块级作用域
其次,要学会用const定义常量,要知道,用const来定义常量,修改时就会报错,而如果是用const来定义了一个对象,由于对象是引用式变量,const固定不可修改的只是这个变量指向的地址,而这个对象里面的属性是可以改变的
解构语法
1、对象解构:
let obj = {
name: "nodejs",
age:11,
email:"1841113974@qq.com"
};
// 取出所有属性并赋值:
// let name = obj.name;
// let age = obj.age;
// let email = obj.email;
// 现在只需要(等效于上面的写法):
// let {name, email, age} = obj; //{ }中的变量名和obj的属性名一致 完全解构
// 部分解构
// let {name} = obj; // 部分解构
//解构之后重命名
let {name:itsName} = obj; 解构之后重命名为itsName
2、数组解构:
let arr1 = [10, 20, 30];
let [a, b, c] = arr1;
console.log(a); //10
console.log(b); //20
console.log(c); //30
// 部分解构
let [d] = arr1;
console.log(d); //10
let [ , ,f] = arr1;
console.log(f); //30
// 复合解构
let arr2 = [1, 2, [10, 20, 30]];
let [ j, k, [x, y, z]] = arr2;
console.log(j); //1
console.log(k); //2
console.log(x); //10
console.log(y); //20
console.log(z); //30
3、字符串解构:
let string1 = "xyz";
let [a,b,c] = string1;
console.log(a); //x
console.log(b); //y
console.log(c); //z
string1[1] = "Y";
console.log(string1); // xyz 无法修改
console.log(string1[1]); // y
模板字符串:
var userInfo = {
id: 1,
name: 'andy',
email: 'gogery@163.com'
}
// 需求:希望把对象拼接为字符串: the userId is xxx, my name is xxx, my email is xxx;
// es6 提供一个语法表示一个字符串,使用的标识符是 反引号;
// 以前定义字符串使用的: '' ""
// 1. 允许换行 2. 允许在模板字符串里面直接使用变量
var tmpl = `the userId is ${userInfo.id},
my name is ${userInfo.name},
string is ${infos}
my email is ${userInfo.email}`;
// `` 反引号 数字键 1旁边的键,需要是 shift + `
console.log(tmpl);
函数形参的默认值:
// ES6 做法,代码简洁易阅读
function func(x = 1){ // 注意当 x 为 undefined 时 x 赋值为 1
console.log(x);
}
func();
function fun(name = 'nodejs', age = 12){
console.log(name, age);
}
fun(); // 'nodejs', 12
fun("xiaoming", 15); //"xiaoming", 15
函数参数的结构赋值:
function func({name, age}){ //{name, age} = obj 解构
console.log(name, age);
}
let obj = {
name:"nodejs",
age:"11",
email:"nodejs@163.com",
};
func(obj); // 输出结果: nodejs 11
// 注意:
// func(); //相当于传了一个null {name, age}=null 就会报错
// func({}); //不会报错,输出:undefined undefined
解构赋值,指定参数的默认值:
function func2({name="nodejs", age=11} = {}){ //指定默认值
console.log(name, age);
}
func2(); //nodejs 11
rest参数/剩余参数:
rest参数搭配的变量是一个数组,该变量将多余的参数放入数组中。
且rest参数之后不能再有其他参数
function func( a, b ,...rest){ // 把剩余的参数都交给rest
console.log(rest);
}
func(10, 20, 30, 50, 60);
function func2(...rest){ //rest 接收所有参数作为一个数组
console.log(rest);
}
func2(60, 70, 80, 90);
扩展运算符:
// 1、基本理解
let arr1 = [10, 20, 30];
function func(a, b, c){
console.log(a,b,c)
}
func(...arr1); //等效于:func(10,20,30); 输出结果10 20 30
// 2、合并数组
let arr2 = [40, 50, 60];
let newArr = [...arr1,...arr2]; // 等效于 [ 10, 20, 30, 40, 50, 60 ]
console.log(newArr); //[ 10, 20, 30, 40, 50, 60 ]
// 3、合并对象
let obj1 = {
name:"nodejs",
age:"11",
};
let obj2 = {
email:"nodejs@163.com",
};
let newObj = {...obj1,...obj2}; // 等效于{ name: 'nodejs', age: '11', email: 'nodejs@163.com' }
console.log(newObj); //{ name: 'nodejs', age: '11', email: 'nodejs@163.com' }
// 4、es6中另一个合并对象的方法
let newObj2 = Object.assign({},obj1,obj2); // 把第二个及第二个以上的参数都合并到第1个上面去。
console.log(newObj2); //{ name: 'nodejs', age: '11', email: 'nodejs@163.com' }
箭头函数:
// function func(){
// console.log("hello");
// }
// 以上代码使用箭头函数书写为:
var func = () => {
console.log("hello");
};
func();
到此,学习node之前的准备工作已经完成,主要都是一些es6的语法。
以上是关于node学习前的准备-node.js初级的主要内容,如果未能解决你的问题,请参考以下文章