首页 > 其他分享 >【JS】简单复习及ES6

【JS】简单复习及ES6

时间:2023-02-18 23:22:12浏览次数:47  
标签:function ES6 函数 作用域 JS let true 变量 复习

一、JavaScript 基础及ES6

视频链接:https://www.bilibili.com/video/BV1Y84y1L7Nn

 

10. 变量的声明 var 与 let

首先说结论,放弃 var,使用 let。

let 为了解决 var 的一些问题:

var 声明:可以先使用在声明(不合理)

         var 声明过的变量可以重复声明(不合理)

       比如变量提升、全局变量、没有块级作用域等等。

var的变量提升和块级作用域容易搞出bug还不好检查,造成函数作用域甚至全局作用域内的变量污染,会有很多问题。

 

12. 常量 const

使用 const 声明的变量称为“常量”。

const 声明的变量,永远不会改变。

使用方法和变量一样,类似于 let ,但变量的值无法被修改。

const A = 123;  这个A的值永远不会改变。

1.常量不允许重新赋值,不能更改值

2.常量声明的时候必须赋值(初始化)

所以,不需要重新赋值的数据使用 const

 

14. 字符串类型

''单引号、""双引号、``反引号包裹的数据都叫字符串。推荐使用单引号 ''    

空字符串:' '

注意:

1.引号必须成对使用

2.单引号双引号可以互相嵌套,比如:let name = '我的名字是"猫"',引号会找最近的匹配,就是外双內单,外单内双。

3.可以使用转义字符 \  ,输出单引号或双引号。

拼接字符串:

'我叫' + '小猫' 就是 '我叫小猫'

 

15. 模板字符串

模板字符串语法:使用反引号  `` ,内容拼接变量时,用 ${ } 保住变量。

在没有模板字符串之前,要拼接变量比较麻烦:'我的名字是' + name + '今年' + age + '岁了';

现在,使用模板字符串:`我的名字是${name},今年${age}岁了`;,效果一样,但模板字符串更加简便。

 

26. 三元运算符

语法:条件 ? 满足条件执行的代码 : 不满足条件执行的代码;

符号: ? 与 : 配合使用

一般用来取值,例如:let a = 1 > 9 ? 1 : 9;,如果为真,返回1,如果为假,返回9,很明显,1大于9是错的,为假,所以返回9。

还可以写字符串、js语句等,1 > 9 ? '1最大' : '错了,9最大';结果为:'错了,9最大'

 

43. 数组

新增 push()

arr.push(元素1,元素2....)

push() 方法将一个或多个元素追加到数组的末尾,并返回该数组的新长度。

新增 unshift()

arr.unshift(元素1,元素2....)

unshift() 方法与push() 一样,不同之处是在开头追加,同样返回新数组的长度。

删除 pop()

arr.pop()

pop() 方法删除数组中最后一个元素,并返回该元素的值

删除 shift()

arr.shift()

shift() 方法删除数组中开头的一个元素,并返回该元素的值

删除 splice()

arr.splice(start, deleteCount)

起始位置,删除几个元素。如果第二个参数不写,就默认从指定的起始位置删除到最后。

 

49. 函数

函数可以实现代码复用,提高开发效率。

函数是什么?function执行特定任务的代码块。

函数的声明:

function 函数名(){
    函数体
}

函数的命名规范:和变量命名基本一致,尽量使用小驼峰式命名,前缀尽量为动词,比如getMax()。例如:can是否可以执行某动作、has判断是否含有某值、is是否为某值、get获取某值、set设置某值、load加载某些数据。

函数调用:函数名()

参数:形参与实参(形式上的参数、实际上的参数)

function getSum(n, m){       //形参
    let sum = n + m;
    console.log(sum)
};
getSum(9,1);          // 实参

 函数的返回值:return 数据;

function fn(){
    return 20
};                 //相当于 fn() = 20,就是 20 这个值,给fn()了
let re = fn();     //调用 fn函数,把返回值给re
console.log(re);   //20

 注意:

1.在函数体中使用 return 关键字能将内部的执行结果交给函数外部使用。

2.return 后面的代码不会被执行,会立即结束当前函数,所以 return 后面的数据不要换行写。

3.函数没有写 return ,返回结果就是 undefined 。

 

56. 作用域

分为 全局作用域局部作用域

全局作用域:整个 script 标签内部或独立的一个 js 文件。

局部作用域:函数内的代码环境,就是局部作用域,也称为函数作用域。

根据作用域的不同,变量可以分为:

全局变量:函数外部 let 的变量。全局变量在任何区域都可以访问和修改。

局部变量:函数內部 let 的变量。局部变量只能在当前函数內部访问和修改。

变量的访问规则:先局部,局部没有就找全局。

 

58. 匿名函数

函数分为:具名函数、匿名函数。

// 1. 具名函数
function fn(){ }              //声明
fn()                          //调用

// 2. 匿名函数
function(){ }                 //声明

 匿名函数,没有名字的函数,无法直接使用。

 使用方式

1. 函数表达式

将匿名函数赋值给一个变量,并且通过变量名称调用。

语法:let fn = function() { };

这个变量 fn 里面装的就是 function() { },console.log(fn)输出显示 function(){ }

1.1 具名函数的调用可以写到任何位置 

fun()                    // 111
function fun(){
   console.log(111);
};
fun()                    // 111

 而匿名函数,函数表达式只能写到后面:

1.2 函数表达式,必须先写表达式,后调用。

fun()                    // 报错,因为 let fun 的 let,变量必须先声明后使用
let fun = function(){
   console.log(111);
};
fun()                    // 111

2. 立即执行函数

可以避免全局变量之间的污染。防止变量污染。

语法:

// 方式一         (函数(){}) ()
(function () {
    ...
}) ();

// 方式二         (函数(){} ())
(function () {
    ...
}() );

 无需调用,立即执行,其实本质已经调用了。

多个立即执行函数之间用分号隔开;。

 

61. 逻辑中断

 与 && 、或  || 、非 !

and         or        not

与 &&:一假则假,两真为真。两边都为 true 结果才为 true。

或 ||    :一真则真,全假为假。两边有一个是 true 就为 true。

非  !    :取反,假为真,真为假。 true变false,fasle变true。

短路:

短路只存在于 &&  || 中,当满足一定条件,就会让右边的代码不执行(短路)。

 &&  左边为false就短路。

  ||     左边为true就短路。

原因:左边的式子有结果,那么就没必要判断右边了。

false && age++    //与,一假全假,不执行后面的语句。(前面是假就短路了)
true || age++     //或,一真则真,不执行。(前面是真就短路了)

11 && 22      //都是真,一二都为真,返回最后一个值
11 || 22      //都是真,一真就行了,返回第一个值

 

62. 转换布尔型

true  、 false

例如:Boolean(111)    为 true

记忆:''  、 0、undefined、null、false、NaN 转换布尔值后都是 false,其余的都是 true。

隐式转换:

1. 数字和字符串相加,就是拼接,结果是字符串。

2. 减法,只能用于数字,'2'-2,字符串'2'被转换数字型2,就是 2-2,等于 0。它会使空字符串""转换为0,''-2得-2

3. null 经过数字转换之后会变为 0。

4.  undefined 经过数字转换之后会变为 NaN。

 

64. 对象

一种无序的数据集合,属性名:属性值,键值对的形式。

let obj = {
    uname: '猫',
    id: '123',
    color: '黒色'
};

 

 

 

 

 

标签:function,ES6,函数,作用域,JS,let,true,变量,复习
From: https://www.cnblogs.com/hynz/p/17133283.html

相关文章

  • Spring IOC官方文档学习笔记(十一)之使用JSR 330标准注解
    1.使用@Inject和@Named进行依赖注入(1)Spring提供了对JSR330标准注解的支持,因此我们也可以使用JSR330标准注解来进行依赖注入,不过,在此之前,我们得先使用maven添加相关依......
  • 【第一个随笔来啦~】Tuffy的复习笔记 —— 数字电路 —— 数据存储
    最近一直在为数字电路复习,发现数据存储这部分的知识点对于数字电路相关课程的初学者来说实在过于复杂不怎么好理解,所以希望通过这个blog为初学者解决这样的问题。注:本blog......
  • uni-app:template、js、css中判断平台(hbuilderx 3.6.18)
    一,代码:<template><viewstyle=""><viewstyle="margin-top:30rpx;width:710rpx;margin-left:20rpx;text-align:center;font-size:50rpx;"><......
  • 期末复习——内存管理
    内存管理为什么要进行内存管理?对单道系统来说,内存分配较简单。对多道系统,如果不进行管理,容易导致数据混乱。内存两部分用于驻留OS:低地址内存空间用于用户进程:高......
  • 【JS】Pug调用自定义JS函数
    当我用node.js从数据库中查询datetime类型的日期字段,并输出到网页上时,发现JS自动进行了类型转换:由2023-01-0721:47:00变成了 SatJan07202321:47:00GMT+0800......
  • 在 Node.js 里使用 multiparty 上传文件
    需求将上传的文件直接保存到GoogleCloudStorage中。解决方法:我们需要使用partstream订阅标准流事件,例如data和end以接收文件数据。示例代码如下:part.on("da......
  • 期末复习之逻辑电路
    非(NOT)门与门或门异或门与非或非逻辑电路布尔代数性质半加器全加器......
  • Cesium体渲染之复刻ThreeJS案例
    体渲染体渲染具体是什么这个知乎上可以搜到,具体是什么这里就不过多赘述了,这里主要是讲讲如何在cesium中实现体渲染。Cesium的体渲染在Cesium最新的开发者版本中(102版本)......
  • 成电分布式复习<上>
    第一章1、分布式系统的构建原因构造分布式系统的主要动机是资源共享和协同计算2、分布式系统举例WEB搜索:Google大型多人在线游戏金融交易区块链系统3、分布式系......
  • (转)vue 利用js触发vue-json-excel的下载操作,解决多次下载等问题
    转载地址:https://www.jianshu.com/p/4d716bec3a26 需求:列表中的每行数据都有一个导出按钮,且点击导出会发起网络请求,获取激活码列表数据。分析:我使用的vue-json-excel......