JavaScript高级(6)

严格模式


  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元拥堵费.

图片

最后的结果:

图片

先这样吧,睡觉啦!

阅读原文

简介:目前学习前端,欢迎关注微信公众号:睡不着所以学编程
(0)
打赏 喜欢就点个赞支持下吧 喜欢就点个赞支持下吧

声明:本文来自“睡不着所以学编程”,分享链接:https://www.zyxiao.com/p/297112    侵权投诉

网站客服
网站客服
内容投稿 侵权处理
分享本页
返回顶部