Node知识点

定时器

setTimeout: 定时执行。设置一个时间,等待时间到达的时候只执行一次,

setInterval: 循环执行。设置一个时间间隔,每隔一段时间都会执行一次这个方法

使用clearTimeout()和clearInterval () 可以清除定时器。

        console.log("A");
        setTimeout(function(){
            console.log("B");
        },20) //20毫秒之后
        console.log("C");
        setTimeout(function(){
            console.log("D");
        },10) //10毫秒之后

        //ACDB

变量

变量的名称须遵循如下3条规则

1.首字母必须是字母(大小写均可) 、下划线,或者美元符号 ($)(数字开头,非法。)

2.余下的字符可以是下划线、美元符号、任意字母或者数字字符。

3.变量名不能是关键字 (keyword) 或者保留字。

字符串

        //1.字符串声明
        let str = '12/34/5/6';

        //2.index检索,判断一个字符串在不在某个字符串里面
        let index1 = str.indexOf('1')
        console.log(index1);//0
        let index2 = str.indexOf('7')
        console.log(index2);//-1

        //3.截取字符串(第一个参数:从哪个下标开始截取;第二个参数;截取的长度)
        let str2 = str.substr(3,3)
        console.log(str2);

        //4.修改字符串(第一个参数;要修改的字符串;第二个参数:修改后的字符串)
        let str3 = str.replace('123','456')
        console.log(str3);

        //5.分割字符串
        //这个函数返回的一定是一个数组
        let array = str.split('/')
        console.log(array);//['12', '34', '5', '6']

        //6.大小写转换(只有英文才有大小写,中文不存在大小写)
        console.log('ABCD'.toLocaleLowerCase());//abcd
        console.log('abcd'.toLocaleUpperCase());//ABCD
        console.log('中文不存在大小写'.toLocaleLowerCase);//ƒ toLocaleLowerCase() { [native code] }
字符串转化为数组
let a = 'abc';
let b = a.split("");
console.log(a);
console.log(b);//['a','b','c']
数组转化为字符串
        let A = ['1','2','3'];
        let B = A.join("");
        console.log(A);//['1','2','3']
        console.log(B);//123
        console.log(typeof(B));//string
模板字符串(template string)

是增强版的字符串,用反引号`标识

它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量

        //字符串新写法 加强版的引号
        console.log('好好学习 \n 天天向上');//好好学习 天天向上

        //内容中可以直接出现换行符
        console.log(`好好学习 天天向上`);

        //3.字符串中嵌入变量
        let name = `大耳朵图图`;
        let skill = `动耳神功`;
        document.write(`${name}的主要技能是${skill}`)
多行字符串

用来提高代码的可读性

尤其是当你处理预定义好的较长字符串时,把这种字符串分成多行书写更有利于提高代码的可读性和可维护性

在一些语言中,多行字符串还可以用来做代码注释

大部分动态脚本语言都支持多行字符串;比如Python,Ruby,PHP

字符串相加

最容易理解也最常用的一种形式

优点:易理解,简单,可靠

缺点:并不是真正意义上的多行字符串;大量的+号看上去像满天星

let str1 = "I am " + 
"dangerous";
console.log(str1);//I am dangerous
使用反斜线

优点:简单,高效

缺点:每一行\后必须不可以不可以有空格,否则之间脚本错误。同样不是真正意义上的多行字符串

       let str2 = "I am\
        dangerous";
        console.log(str2);//I am        dangerous
模板字符串

在真实的业务中将一个字符串变成多行

let str3 = `I
am
dangerous`;
console.log(str3);

大小写转换

console.log('ABCDEFG'.toLowerCase()); //abcdefg
console.log('abcdefg'.toUpperCase()); //ABCDEFG

forEach和map方法有什么区别?

forEach()方法不会返回执行结果,也就是说forEach()方法会修改原来的数组,但是没有返回值。

map()方法得到一个新的数组,是map方法修改数组后返回回来的新数组。

forEach应用场景: 用于遍历数组,相当于for循环另一种写法

语法: 数组.forEach( function(value,index,arr)[ // 算法 })

forEach必须提供一个参数

a.value:每次遍历到的数组元素

b.index:每次遍历到的数组的下标

c.arr:数组

d.forEach

every应用场景: 用于判断数组中是否所有元素都满足条件

注意点

a.every函数返回一个布尔类型值

// 需求: 判断数组中没有负数
let arr = [23,31,60,88,-50,90,108,260];
let arr1 = arr.every((item)=>{
return item > 0;
});
console.log(arr1); //false

GET请求: 可以理解为“取”的意思。用来获取数据,不对服务器的数据做任何的修改、新增、删除等操作。

POST请求: 可以理解为“贴”的意思。数据发送到服务器以创建或更新资源,侧重于更新数据PUT请求: 可以理解为“放”的意思。数据发送到服务器以创建或更新资源,侧重于创建数据。

DELETE请求:“删除”。删除指定的资源。

HEAD请求: HEAD方法与GET方法相同,也是从服务器获取信息。但服务器不会返回请求的实体数据,只会传回相应头可以用在很多并不真正需要资源的场合,避免传输body数据的浪费。

比如,想要检查一个文件是否存在,只要发个信息HEAD请求就可以了,没有必要用GET把整个文件都取下来PATCH(布丁)请求: 用于上传数据并更新“部分”资源。

HTTP状态码

1开头的状态码 (信息类)

100,接收的请求正在处理

2开头的状态码 (成功类)

200,服务器已成功处理了请求。

3开头的状态码 (重定向)

301,永久性重定向。302,临时重定向

4开头的状态码 (客户端错误)

400,错误请求,服务器不理解请求的语法。403,服务器拒绝请求。

5开头的状态码 (服务器错误)

500,服务器内部错误,无法完成请求。503,服务器停机维护,无法处理请求

内置模块fs

node提供了一个内置模块fs(filesystem),专门用来操作文件的

可以读取一个文件的内容,也可以把内容写入到一个文件

//导入模块
require('模块名')
// const fs = require('fs')(一般会定义一个变量名接收)

//读取文件
fs.readFile('文件的路径',(err,data) => {
    //不管是读取成功,还是读取失败,都会调用这个回调函数。
    //如果读取失败,err里就会有错误信息
    //热锅读取成功,err为空,data里就会有读取的内容
})

//写入文件
fs.writeFile('文件的路径',写入的内容,err => {
    //写入完成调用的回调函数
    //如果成功err就为空,如果失败就有值
})

//追加文件内容
fs.appendFile('路径','要追加的内容',err => {
    if(!err){
        console.log('追加成功');
    }
})

//拷贝文件
fs.copyFile('要拷贝的文件路径','目标文件的路径')

//删除文件
fs.unlink('文件路径',err => {
    if(!err) {
        console.log('删除成功');
    }
})

同步操作和异步操作

异步是指进程不需要一直等下去,而是继续执行下面的操作,不管其他进程的状态。当有消息返回时系统会通知进程进行处理,这样可以提高执行的效率。而同步处理则与之相反,需要一件事完成之后才能走另外一件事,不能“分心”举例。异步处理-小明一边吃西瓜一边看电视;同步处理-小明吃完了西瓜再去看电视

题目:

如何理解同步和异步?

同步指两个进程的运行是相关的,一个进程要阻塞等待另外一个进程的运行2异步的意思是两个进程毫无相关。发送完一个请求,不必等待返回。

闭包(closure)

闭包是一种代码形式,内部函数访问外部函数的局部变量。

在JS中,每当创建一个函数,闭包就会在函数创建的同时被创建出来,作为函数内部与外部连接起来的一座桥梁。

举例:js函数A里面有一个函数B,函数B访问了函数A里面定义的局部变量,此时就产生了闭包。

变量所在的函数就是闭包函数,这里A就是闭包函数。

// 外部函数
        function outer(){

            //外部函数中的局部变量
            let n = 10

            //内部函数
            function inner(){

                //内部函数访问外部函数的局部变量
                console.log(n);
            }

            //将内部函数return出去,这样外部才可以调用
            return inner
        }

        let fn = outer();
        
        console.log(fn);
        fn()

由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在E中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。

JSON

JSON是JS对象的字符串表示法,它使用文本表示一个JS对象的信息,本质是一个字符串

要实现JSON字符串转换为JS对象,使用JSON.parse()方法。

要实现JS对象转换为JSON字符串,使用JSON.stringify()方法。

Promise的基本用法

@Promise.resolve 方法:(value)=>(1)value: 成功的数据或 promise

说明:返回一个成功/失败的 ·promise 对象。

Promise.reject 方法:(reason)=>(1)reason: 失败的原因

说明:返压一个失败的 promise 对象。

AJAX

AJAX全称(Async Javascript and·XML),即异步的JavaScript 和XML,是一种创建交互式网页应用的网页开发技术

let xhr=-new XMLHttpRequest;

xhr.open("请求方式’,"请求地址’);

xhr.οnlοad=function()[请求成功后的回调函数};

xhr.send( )

对象

对象介绍

对象是什么:对象是一种复杂数据类型。

对象作用:以键值对方式存储多个数据。

对象和数组异同点

相同点:都是复杂数据类型,都可以存储多个数据。

不同点:存储方式不同。

数组:有序存储。

对象:无序存储(键值对)。

// 需求:存储一个人的信息(姓名,年龄,性别)
        
        // 1.使用基本数据类型 
        let name ='班长' 
        let age = 18 
        let sex ='男'
        // 好处:阅读性高
        // 弊端:冗余

        // 2.使用复杂数据类型-数组 
        let arr = ['班长',18,'男'] 
        console.log(arr);
        // 好处:一个变量存储多个数据
        // 弊端:阅读性不高

        // 3.使用对象
        let obj = { name:'班长',age:38, sex:'男'}
对象语法

1.声明对象

let 对象名 = {

属性名:属性值,

属性名:属性值,

}

2.取值语法

对象名.属性名

对象遍历
遍历数组:for循环
for(let i = 0; i < arr.length; i++){ arr[i] }
2.遍历对象:特殊的for-in循环(专门用于遍历对象)
for(let key in 对象名){ 对象名 [key] }

        let obj = {
            name:'班长',
            age:18,
            sex:'男',
            hobby:'学习'
        }

        for(let key in obj){
            console.log(key);
            console.log(obj[key]);
        }
对象操作(增删改查)
let obj = {
    name:'班长',
    age:18, 
    sex:'男',
}

    // 1.查询语法(属性名存在,获取属性值;属性名不存在,获取underfined)
    // a.点语法 对象名.属性名
    // b.[]语法 对象名['属性名']
    // a.点语法 对象名.属性名
    console.log(obj.name );//班长 console.log(obj.age );
    //18 console.log(obj.sex );//男
    console.log(obj.country);//undefined
    // b.[]语法对象名['属性名']
    console.log(obj['sex'] );//男

    // 2.修改属性
    // a.对象名.属性名 = 值
    // b.对象名['属性名'] = 值 
    obj.name ='李四'; 
    obj['age'] = 20;
    console.log(obj);//{name:'李四',age: 20,sex:'男'}


    // 3.新增属性
    // a.如果对已经存在的属性赋值,则是修改
    // b.如果对不存在的属性赋值,则是新增 
    obj.hobby ='学习'
    console.log(obj);//{name:'李四",age:20,sex:"男',hobby:'学习'}

    // 4.删除对象属性
    // delete 对象名.属性名 
    delete obj.age
    console.log(obj);//{name:'李四",sex:'男',hobby:'学习'}
Math对象
// 1.内置对象:属于object对象,由js作者提前写好的对象,里面存储了一些属性和方法,直接拿来使用即可
// 说人话:相当于手机内置应用,如短信、电话。一买来就自带,直接使用。 
// 2.Math:数学对象
//   Date:日期对象
//   Function:函数对象 
//   RegExp:正则表达式 
//   Array:数组对象 
//   String:string对象 
//   Boolean:boolean对象 
//   Number:number对象

//1.圆周率
console.log(Math.PI);//3.141592653589793

//2.绝对值
console.log(Math.abs(-2));//2

//3.找最大值/最小值
console.log(Math.max(10,20,30,40,50)); //50
console.log(Math.min(10,20,30,40,50)); //10

//4.幂运算:Math.pow(x,y) 求x的y次方
console.log(Math.pow(2,3)); //8

//5.随机数 0-1随机小数
console.log(Math.random()*100);

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值