JavaScript
文章平均质量分 72
JavaScript
葱不爱姜
这个作者很懒,什么都没留下…
展开
-
JavaScript的作用域闭包
函数bar可以访问外部作用域中的变量a,这就是闭包吗?严格来说这并不是,在上面代码片段中,函数bar具有一个覆盖foo作用域的闭包。也可以认为bar封闭在了foo的作用域中,但是通过这种定义无法明白这个代码片段中的闭包是如何工作的。下面一段代码清晰的展示了闭包分析一下:在foo正常执行后,其返回值赋值给变量baz并调用baz,实际上只是通过不同的标识符引用调用了内部的函数bar。bar肯定可以被正确执行,但是在这个例子中bar是在自己定义的词法作用域意外的地方执行的。在foo。原创 2024-10-06 20:42:02 · 635 阅读 · 0 评论 -
JavaScript的变量和函数提升
直觉上认为JavaScript代码在执行时是由上到下一行一行执行的。但实际上这并不完全正确。可能会认为会输出undefined,因为var a声明在a = 2之后,会自然而然的认为变量被重新赋值了,因此会赋予默认值undefined。但是这里输出的结果是2。这里会输出什么呢?根据第一个代码片段可能会认为输出为2。或者由于变量a在使用前没有进行声明,因此会抛出错误。到底哪个结论正确呢?结果是两种猜测都不对,这里输出的是undefined。原创 2024-09-22 17:20:41 · 1048 阅读 · 0 评论 -
JavaScript的作用域(四)块作用域
尽管函数作用域是最长用的作用域单元,但其他类型的作用域单元也是存在的,并且通过使用其他类型的作用域单元甚至可以实现维护起来更加优秀、简介的代码。在for循环的头部直接定义了变量i,通常只想在for循环内部的上下文中使用i,但忽略了i会被绑定在外部作用域中的事实。这就是块作用域的用处。变量的声明应该距离使用的地方越近越好,并最大限度本地化。变量仅在if声明的上下文中使用,因此如果能将它声明在if块内部中会很有意义。但是,当使用var声明的时候,它写在哪里都是一样的,因为它们最终都会属于外部作用域。原创 2024-09-22 15:33:25 · 470 阅读 · 0 评论 -
JavaScript的作用域(三)函数作用域
先说结论:属于这个函数的全部变量都可以在整个函数的范围内使用及复用(这不是废话?小示例在foo的作用域中标识符a、b、c、bar,不能在外部访问直接访问它们,相当于foo把这些标识符"隐藏"起来了。我们一般是声明一个函数,然后往里面写代码。但是反过来想一下我们把一段代码放到一个函数里面给它“包起来”,这不就把这段代码给“隐藏”起来了!芜湖!开始有点意思了。其实这种技术是非常有用的,灵感来自最小特权原则,也叫最小授权或最小暴露原则。原创 2024-09-18 18:20:03 · 486 阅读 · 0 评论 -
JavaScript的作用域(二)词法作用域
第一节讲到作用域是一套规则,那么词法作用域又是什么呢?简单来说词法作用域是由编写代码时将变量和块级作用域写在哪里决定的。考虑以下代码分析一下各自的作用域:是在顶层作用域的,引擎可以在任意位置访问到它。是嵌套在作用域下的变量,而则是嵌套在下的变量。再来分析一下代码的执行过程:当引擎执行到时会在当前作用域找到并执行,同时会找到作用域下的并赋值为。接下来引擎会在作用域下找到并将其赋值为。代码继续执行到此时作用域下的那么引擎通过计算将作用域下的赋值为。这时来到了打印函数,在作用域下引擎只能找到变量,关于引擎只原创 2024-09-09 21:39:12 · 523 阅读 · 0 评论 -
JavaScript的作用域(一)作用域是什么
几乎所有的编程语言的最基本的功能之一,就是能够储存变量当中的值,并且可以在之后对这些值进行访问或修改。但是变量往往存在哪里?换句话说程序如何找到它们?这些问题说明需要设计一套良好的规则来储存变量,并且之后可以方便的找到它们。这套规则就叫。原创 2024-09-08 21:46:28 · 474 阅读 · 0 评论 -
JavaScript基本数据类型之 null undefined Boolean Number String
JavaScript数据类型简单数据类型Undefined:当使用var和let声明变量但是没有赋值的时候,就相当于给变量赋值了一个undefined值,一般来说,不用显式地给某个变量设置undefined值,字面值undefined主要用于比较,增加这个特殊值就是为了明确空对象指针null和变量为初始化区别Null:逻辑上讲null值表示一个空指针对象,这也是typeof null = object 的原因。undefined是由null派生而来的,因此ECMA-262将他们定义为表面相等即 nu原创 2021-02-03 20:20:20 · 318 阅读 · 0 评论 -
vue(前端)字符串导出.txt文件
首先安装 FileSaver包,npm install file-saver --save在main.js中引入 import {saveAs} from 'file-saver;'将字符串转为Blob对象let str = new Blob(['要导出的字符串'], {type: 'text/plain;charset=utf-8'});saveAs(str, `导出文件时的名字.txt`);注意这里要手动写上文件的后缀名...原创 2021-01-28 15:41:31 · 3427 阅读 · 3 评论 -
Script-8个属性
async:可选,表示立即开始下载脚本,但不能阻止其他页面的动作,比如下载资源或等待其他脚本加载。只对外部脚本有效。charset:可先,使用src属性指定的代码字符集。crossorigin:可选,配置相关请求的CORS设置。默认不使用CORS。crossorigin=anonyous配置文件请求不必设置凭据标志。crossorigin=use-credentials设置凭据表示,意味着出站请求包含凭据。defer:可选,表示在文档解析和显示完成之后再执行脚本。只对外部脚本有效。integ原创 2021-01-24 15:06:34 · 169 阅读 · 0 评论 -
防抖与节流
应用场景: 当需要监听一个执行频率较高的事件(监听滚动条滚动,表单输入)时,执行函数触发的频率过高,但只需要函数最后一次执行结果,这时如果不对事件进行处理,过多的触发函数操作会降低浏览器的性能,降低用户的体验。这时候按照实际情况可以使用防抖和节流解决此问题何为防抖: 防抖(debounce)是指在指定时间内多次触发函数,函数只会执行最后触发那一次,根据应用场景防抖可分为先不执行,指定时间之后再执行,立即执行,指原创 2020-12-18 23:21:21 · 106 阅读 · 1 评论