前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >JavaScript高级(6)

JavaScript高级(6)

作者头像
y191024
发布2022-09-20 20:32:12
发布2022-09-20 20:32:12
2780
举报

严格模式

JavaScript除了提供正常模式外,还提供了严格模式.ES5的严格模式是采用具有限制性JavaScript变体的一种方式,即在严格的条件下运行JS代码

严格模式对正常的JavaScript语义做出了要求

舍友在睡觉,懒得打字了

在立即执行函数里面为脚本开启严格模式

本文由“壹伴编辑器”提供技术支持

严格模式中的变化

注意:事件,对象和定时器里的this指向的还是window

② 不允许在非函数的代码块里声明函数,比如if里面,for循环里,但是可以调用

高阶函数

高阶函数是对其他的函数进行操作的函数,它接收函数作为参数或函数作为返回值输出

函数也是一种数据类型,同样可以作为参数,传递给另一个参数使用.最典型的就是作为回调函数.

本文由“壹伴编辑器”提供技术支持

接下来是重点

闭包

变量根据不同可以分为两种:全局变量局部变量

  • 函数内部可以使用全局变量
  • 函数外部不可以使用局部变量
  • 当函数执行完毕,本作用域内的局部变量会销毁

什么是闭包

闭包(closure)指有权访问另一个函数作用域中变量的函数;简单理解就是,一个作用域可以访问另一个函数内部的局部变量.

被访问的变量所在的函数就是闭包函数,我们可以来看看我们以前写过的闭包.

我们还可以让外面的作用域访问fn内部的局部变量:

做了一下分析,但是可能会看不懂,画的有点乱,我文字解释一下:首先就是调用了fn这个外层的函数,然后声明赋值了num这个变量,由于没有调用fun函数,所以直接跳到了return fun;此时就将整个函数,赋值给了fn(),又因为f接收了函数fn()的返回的值,所以此时f = function fun(){......},最后的f()就相当于调用了fun函数.

还可以再改进一下,上面的方法还是比较麻烦的

闭包的作用: 延伸了变量的作用范围

下面看第一个使用闭包的例子:循环注册点击事件

html:

script:

立即执行函数也称为小闭包,因为立即执行函数里面的任意一个函数都可以使用它的i这个变量

这里解决的我很久的疑惑,就是为什么这样的的写法是错误的,不管点击哪个li打印出来的索引都是4,这里其实是同步和异步的关系,onclick点击事件的异步的,但是我们的循环是同步任务,所以会立即执行,最后就变成了4.

第二个小例子:循环中的setTimeout()

其实和上面差不多吧

案例3: 计算打车价钱

打车起步价在3公里以内为13元,之后每多一公里增加5块钱,用户输入公里数就可以计算打车价格,如果有拥堵情况则要加收10元拥堵费.

最后的结果:

先这样吧,睡觉啦!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 睡不着所以学编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档