- 博客(217)
- 资源 (1)
- 收藏
- 关注
原创 null与undefined、Symbol
另外,没有明确返回值的函数返回值是undefined,没有传值的参数的值也是undefined。但是typeof null会返回字符串"object"是语言的一个bug,实际上,null本身是基本数据类型的。实际编码中,我会尽量避免使用null和undefined,如果需要给某个变量或属性赋一个这样的值,或者需要向函数传入或从函数中返回一个这样的值,我通常使用的是null。要理解符号,需要了解Javascript的基础类型Object是一个属性的无序集合,其中每个属性都有一个名字和一个值。
2024-03-25 15:55:46 326
原创 作用域闭包
当函数可以记住并访问所在的词法作用域时,就产生了闭包,即使函数时在当前词法作用域之外执行。下面用一些代码来解释这个定义。这段代码看起来和嵌套作用域中的示例代码很相似。基于词法作用域的查找规则,函数bar()可以访问外部作用域中的变量a(这个例子中的事一个RHS引用查询)。技术上来讲,也许是。但根据前面的定义,确切地说并不是。我认为最准确地用来解释bar()对a的引用的方法是词法作用域的查找规则,而这些规则只是闭包的一部分。()
2024-03-25 15:54:46 264
原创 JS判断数据类型
typeof可以检测基本数据类型,但是碰到引用数据类型返回的都是object。typeof通常用来判断基本数据类型,但是用typeof来判断null和引用类型的实例返回的结果都是"object"
2024-03-25 15:33:00 509
原创 Javascript——Symbol简单了解
Symbol(符号)是ECMAScript6新增的数据类型。符号是原始值,且符号实例是唯一、不可变的。符号的用途是确保对象属性使用唯一标识符,不会发生属性冲突的危险。尽管符号听起来跟私有属性有点类似,但符号并不是为了提供私有属性的行为才增加的(尤其是因为Object API提供了方法,可以更方便地发现符号属性)。相反,符号就是用来创建唯一记号,进而用作非字符串形式的对象属性。
2024-03-25 14:26:07 1027
原创 Javascript——生成器(Generator)自动执行
Generator自动化是通过Thunk函数进行实现,写这篇文章的目的是为了理解通过Thunk实现Generator函数的自动执行。
2024-03-21 14:03:47 537
原创 ES6生成器(Generator)
function* 声明创建一个绑定到给定名称的新生成器函数。生成器函数可以退出,并在稍后重新进入,其上下文(变量绑定)会在重新进入时保存。
2024-03-19 18:06:30 590
原创 作用域(词法作用域)
我们把作用域看作气泡,气泡的结构和互相之间的位置关系给引擎提供了足够的位置信息,引擎用这些信息来查找标识。作用域在查找时会逐级查找,作用域会查找第一个匹配的标识符时停止。在多层作用域中可以定义同名标识符,这叫“遮蔽效应”(内部的标识符“遮蔽”了外部的标识符)。抛开遮蔽效应,作用域查找始终从运行时所处的最内部作用域开始,逐级向外或向上进行,直到遇见第一个匹配的标识符为止,如果遇见重名的也是一样,会找到最近的那个停止查找。
2024-03-18 09:49:44 924
原创 Javascript编译原理简介
Javascript引擎进行编译的步骤和传统的编译语言非常相似,在某些环节可能比预想的要复杂。在传统的编译语言的流程中,程序中的一段源代码在执行之前会经历三个步骤,统称为“编译”(下面介绍的是传统编译语言的流程①分词/词法分析(Tokenizing/Lexing)这个过程会将由字符组成的字符串分解成(对编程语言来说)有意义的代码块,这些代码块被称为词法单元(token)。例如,考虑程序var a = 2;。这段程序通常会被分解成为下面这些词法单元:var、a、=、2、;。
2024-03-14 23:33:44 883
原创 JS—delete操作符
删除对象的属性或数组元素不仅会被设置为undefined,当删除一个属性时,这个属性就不复存在了。删除某个数组元素会在数组中留下一个“坑”,并不会改变数组的长度。其中在对象中,不可配置的属性是无法删除的。在严格模式下,删除不存在/不可配置的属性会报错SyntaxError/TypeError。声明的变量会变成全局变量(如果没有在函数内部声明的话)。如果你尝试删除一个未声明的变量,将会得到一个语法错误。操作符可以用来删除对象的属性,但不能删除那些已经声明为。声明的,或者是在一个模块中声明的,
2024-03-12 12:51:34 299
原创 可选的分号
这对于保持代码清晰很重要:如果没有分隔符,一条语句的结尾可能是另一条语句的开头,反之亦然。而这很有可能不是代码作者的真实意图。实践中,以/、+和-开头的语句极少,但以(和[开头的语句则并不鲜见,至少在某种Javascript编程风格下经常会看到。更准确的讲(除了稍后介绍的第三种例外情况),Javascript只在下一个非空格字符无法被解释为当前语句的一部分时才把换行符当作分号。第二个本身是一条独立的语句,但Javascript并没有把第二个换行符当作分号,因为它还可以继续解析更长的语句 a = 3;
2024-03-10 20:44:00 337
原创 Unicode和ASCII
中只使用ASCII字母和数字(为了避免使用Unicode),让我们来看下面的一个案例:é可以使用Unicode转义编码:\u00e9或\u{E9}(这两个是等价的)表示,同时也可以使用e\u{301}或e\u0301表示,这两种变量定义在文本编辑器中看起来完全相同,但是它们的二进制编码不同,因此javascript认为他们不同,此时打印\u00e9 ==== e\u0301会是各自存储的值。1.我们通过例子来验证。
2024-03-09 14:15:35 525
原创 3. 虚拟DOM的两种创建方式,虚拟DOM与真实DOM
2.虚拟DOM比较“轻”,真实DOM比较“重”,因为虚拟DOM是React内部在使用,无需真实DOM上这么多的属性。3.虚拟DOM最终会被React转化为真实DOM,呈现在页面上。1.虚拟DOM本质是Object类型的对象(一般对象)打印输出虚拟DOM和真实DOM进行比较。
2023-06-19 13:54:01 374
原创 1.将React添加到网站
而 HTML5 新的规定,是可以允许本地获取到跨域脚本的错误信息的,但有两个条件:一是跨域脚本的服务器必须通过 Access-Control-Allow-Origin 头信息允许当前域名可以获取错误信息,二是网页里的 script 标签也必须指明 src 属性指定的地址是支持跨域的地址,也就是 crossorigin 属性。当引入跨域的脚本(比如用了 apis.google.com 上的库文件)时,如果这个脚本有错误,因为浏览器的限制(根本原因是协议的规定),是拿不到错误信息的。
2023-06-19 13:18:50 270
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人