首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

js作用

前言 相信自从es6出来之后,你一定多少知道或者已经在项目中实践了部分的块级作用域,在函数或者类的内部命名变量已经在使用let了,但是你知道它真正的作用什么吗?...又是因为什么我们要用这个块级作用域,本文与你一起探讨块级作用域的场景以及所有细节问题。...es6之前的作用域 特点1 :js只有函数级作用域以及全局两种 特点2 :不通过var声明的变量直接赋值也可以用并且可以访问,原理是直接赋值到了window对象属性变量下,两者如果同时定义,那么会覆盖使用...块级作用域 场景一 循环中的块级作用域 如果我们有一个遍历循环的绑定事件,并且需要把当前的指针绑定到对应方法。...,利用let块级作用域特性,区别就是定义变量时 i是块级变量,所以定义的函数的变量也是当时的块级作用域,不随外面非块级元素值变化影响 var arr=[] for(let i=0;i<10;i++)

3.2K20

JS匿名函数的作用

首先,什么是匿名函数? - 匿名函数主要利用函数内的变量作用域,避免产生全局变量,影响整体页面环境,增加代码的兼容性。(如下图) ? 那么 他的作用什么?...如何避免 将页面中使用的各类函数都封在以下函数: (function ($) { })($); 将jQuery特有的'$'符号作为参数传入匿名函数以保护页面的内容...---- 个人的看法:这个匿名函数也有些类似于ES6的let方法,所声明的内容能够有效避免全局变量的产生,所以即使在控制台中,也不能够随意改变该页面的内容,我想 let方法的出现可能就是为了补充前面的不足吧...上面的是我个人的看法,至于有没有什么补充的,欢迎大家来一起探讨,本人还只是一个小白,其知识并不是很多。希望可以多多指教

2.9K20

JS作用域下 21

ES6之前和ES6分开研究 1.需要明确: 1.ES6定义变量通过let 2.ES6除了全局作用域、局部作用域以外, 还新增了块级作用域...3.ES6虽然新增了块级作用域, 但是通过let定义变量并无差异(都是局部变量) 2.ES6作用域链 1.1.全局作用域我们又称之为0级作用域 2.2....定义函数或者代码块都会开启的作用域就是1级/2级/3级/...作用域 2.3.JavaScript会将这些作用域链接在一起形成一个链条, 这个链条就是作用域链 0...---> 1 ----> 2 ----> 3 ----> 4 2.4.除0级作用域以外, 当前作用域级别等于上一级+1 3.变量在作用域链查找规则...3.1先在当前找, 找到就使用当前作用域找到的 3.2如果当前作用域中没有找到, 就去上一级作用域中查找 3.3以此类推直到0级为止, 如果0级作用域还没找到, 就报错

1.3K20

js的块级作用

在上一篇说到了作用域,简单介绍了一下块级作用域,在这里我们来详细介绍一下。 众所周知,在js函数作用域是常见的单元作用域,也是现行的大多数js中最普遍的设计方案。...块作用域是一个用来对之前的最小授权原则进行扩展的工具,将代码从在函数隐藏信息扩展为在块隐藏信息。...为什么要把一个只在 for 循环内部使用(至少是应该只在内部使用)的变量 i 污染到整个函数作用域中呢?所以块级作用域在开发对于变量的管理以及垃圾回收是很有用处的。...那么都有什么可以形成块级作用域呢,下面我们来看一下 try/catch 这个东西相信很多人也都用过,但是我们大部分时间写代码都是在try块写的,不要认为try写的代码就是块级作用域,其实里面声明的变量也会被声明为全局变量...也许 catch 分句会创建块作用域这件事看起来像教条的学院理论一样没什么用处,很多人认为有病才会这么写代码,我为了声明一个块级作用域变量还得强制抛出一个异常。

2.5K10

JS作用域链上 20

"的时候最好将ES6之前和ES6分开研究 1.需要明确: 1.ES6之前定义变量通过var 2.ES6之前没有块级作用域, 只有全局作用域和局部作用域...3.ES6之前函数大括号外的都是全局作用域 4.ES6之前函数大括号的都是局部作用域 2.ES6之前作用域链 2.ES6之前作用域链...1.1.全局作用域我们又称之为0级作用域 2.2.定义函数开启的作用域就是1级/2级/3级/...作用域 2.3.JavaScript会将这些作用域链接在一起形成一个链条..., 这个链条就是作用域链 0 ---> 1 ----> 2 ----> 3 ----> 4 2.4.除0级作用域以外, 当前作用域级别等于上一级+1...3.变量在作用域链查找规则 3.1先在当前找, 找到就使用当前作用域找到的 3.2如果当前作用域中没有找到, 就去上一级作用域中查找 3.3以此类推直到0

66720

什么是Node.js,它有什么作用,可以干啥呢?

Node.js的主要作用是提供一个事件驱动、非阻塞式I/O模型,使得JavaScript能够高效地处理大量并发请求。...在传统的Web应用程序,每个请求都需要一个独立的线程来处理,这会消耗大量的系统资源。而Node.js采用单线程事件循环模型,可以处理大量并发请求,并且只使用少量的系统资源。...这使得Node.js可以高效地处理大量并发请求,并且具有非常高的性能。 单线程:Node.js采用单线程模型,可以避免多线程编程的线程安全问题。...同时,由于Node.js使用JavaScript,开发人员可以方便地使用前端技术(如HTML、CSS、JavaScript)构建用户界面,并使用后端技术(如Node.js、Express.js)处理业务逻辑和数据持久化...在使用Node.js的过程,开发人员需要注意一些问题。首先,由于Node.js是单线程的,如果存在长时间运行的计算任务或者I/O阻塞,可能会影响整个应用程序的性能。

23410

关于JS作用域中的沉思

scope和closure是javascript两个非常关键的概念,前者JS用多了还比较好理解而且容易体会到,而closure就不一样了。...但为什么对 o2的操作会导致数据的泄漏呢?...这是为什么呢? 原因是JavaScript引擎会在编译阶段进行数项的性能优化。其中有些优化依赖于能够根据代码的词法进行静态分析,并预先确定所有变量和函数的定义位置,才能在执行过程快速找到标识符。...但如果引擎在代码中发现了with,它只能简单地假设关于标识符位置的判断都是无效的,因为无法知道传递给with用来创建新词法作用域的对象的内容到底是什么。此时引擎的所有的优化努力大概率都是无意义的。...在一个函数内部定义的函数,闭包中会将外部函数的自由对象添加到自己的作用域中,所以可以通过内部函数访问外部函数的属性,这就是js模拟私有变量的一种方式。

85200
领券