一、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