博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ECAM6--变量与函数
阅读量:5018 次
发布时间:2019-06-12

本文共 2248 字,大约阅读时间需要 7 分钟。

LET 关键字

用来替代了var的关键字

【特性】
  1. 不允许重复声明
  2. 没有预解析
  3. 块级作用域(遇到{}就会产生作用域)
【作用域】

一对 =={ }== 包括的区域称之为代码块

块级作用域指一个变量或函数只在该区域起作用

【Dome1】

console.log(a);//会报错,a is not definedlet a = 3;//原来如果用var声明到调用后,不会报错,而是undefined,说明用var预解析了,但是用let不会

【Dome2】

//如果申明i的时候用原来的var,则每次定时器打出来的都是i,之前解决的方案就是利用函数的自执行,将每次的i传入函数中使用,但是如果用let申明i,就解决了问题,打出了0-9的数字。同样,也可以用在选项卡的例子中for(let i=0; i<10; i++){    setTimeout(function(){        console.log(i)    },50); }

const 声明常亮

在定义之后值是固定不变的,即为常量

常量的值不能修改,但是如果常量保存的是一个对象,那么对象的属性是可以被修改

可以理解为,对象本身是在堆内存中,它的值本身是可以修改的,但是它的引用地址在栈内存中,一旦用const申明后,引用地址是不能改的

【Dome】

const a = 1;a = 2;console.log(a);//会报错:TypeError: Assignment to constant variable.
const a = 1;a = 2;console.log(a);//会报错:TypeError: Assignment to constant variable.

var存在的问题

  1. 可以重复声明
  2. 无法限制修改

    代码的限制,严谨性可以开发大型项目

  3. 没有块级作用域

let 与 const

  • 共同点:不能重复声明
  • 不同:一个变量/一个常量

块级作用域

var btn = document.getElementsByTagName('button')    console.log(btn);    window.onload = function(){            for(var i = 0; i < btn.length; i++) {                (function(i){                    btn[i].onclick = function(){                        alert(i)                    }                })(i)            }    }
let btn = document.getElementsByTagName('button')    console.log(btn);    window.onload = function(){       for(let i = 0; i < btn.length; i++){            btn[i].onclick = function(){                alert(i)            }       }    }

箭头函数

() => {}

  1. 如果只有一个参数,()可以省略
  2. 如果只有一个return {}可以省略
function(){    }()=>{    }

栗子: 排序

let arr = [5,61,62,15,4,7]// let newArr = arr.sort(function(n1,n2){//     return n1 - n2// })let newArr = arr.sort((n1,n2) => {    return n1 - n2})let newArr = arr.sort((n1,n2) => { n1 - n2 })console.log(newArr);

省略括号

输入a输出

let name = a => a * 2alert(asd(2))

函数的参数

  1. 参数扩展/展开
  2. 默认参数

    剩余参数

参数扩展

  1. 收集剩余参数
  • Rest Parameter(args)必须是最后一个
function show(a,b,...args){    alert(a);    alert(b);    alert(args);}show(1,23,3,2,54,5)// 1,23,[3,2,54,5]
  1. 扩展运算符

    只能将数组展开,但是不能赋值

let aa = [1,2,3]let bb = [23,32,43]let arr = [...aa,...bb]alert(arr)//1,2,3,23,32,43

默认参数

我希望我没有传的时候默认值

show = (a,b=12,c=23) => a + b + calert(show(1))

必传参数

默认参数的一种应用

const required = () => { throw new Error('msg')}const add = (a = required(), b = required()) => a + b;alert(add(1,2))vv

转载于:https://www.cnblogs.com/LingXiangLi/p/10252651.html

你可能感兴趣的文章
net core发邮件——MimeKit
查看>>
[0014] HDFS 常用JAVA 操作实战
查看>>
线程安全
查看>>
学习-如何克服拖延
查看>>
dos命令将指定文件夹下文件按照类型将文件名分别写入不同txt中
查看>>
redis数据库选择-select
查看>>
移植udt到android
查看>>
Android做检测版本更新安装完以后就什么都没有了,没有出现安装成功的界面
查看>>
NYOJ 881 小m的区间公约数
查看>>
[Codeforces 448C]Painting Fence
查看>>
css常见问题
查看>>
jquery_opacity_css透明
查看>>
HDU 1160 FatMouse's Speed
查看>>
log4j配置打印mybatis的sql到控制台(复制)
查看>>
【前端笔记】浅谈js继承
查看>>
HDU-不容易系列之(3)—— LELE的RPG难题
查看>>
在Eclipse中混合Java和Scala编程
查看>>
pl/sql的to_char和to_date
查看>>
第10课 - C++中的新成员
查看>>
elasticsearch的python增删查改实例分析
查看>>