摘要:函数表达式函数声明立即执行函数表达式。变量提升所有的声明变量和函数都会被移动到各自作用域的最顶端,这个过程称为提升。严格模式绑定到,否则为全局对象。这种设置为单向,不可取消。如果值为则禁止删除这个属性。是否为可枚举的。
变量赋值
变量赋值分为两个动作:
如果当前没有声明过,那编译器会在当前作用域声明一个。
运行时引擎会在作用域查找该变量,如果找到就对其赋值。
查询有:LHS查询和RHS查询。
LHS:赋值操作的目标是谁。
RHS:谁是赋值操作的源头,restrieve his source value(取到它的源值)。
举个栗子:
// RHS引用,取到a的值。 console.log(a); // LHS引用,只需要对=2这个赋值操作找到一个目标 a = 2;
查看下面这个函数分别有几次LHS和RHS?
function foo(a) { var b = a; return a + b; } var c = foo(2);
其中有3次LHS:
c = foo(2) a = 2 b =a
4次RHS:
foo a //因为要把a的值赋给b a+b中的a和别分别一次函数表达式和函数声明简单区分
使用关键字function来判断是否为第一词来区分,如果是为函数声明,如果不是那么就是函数表达式。
// 函数表达式 (function xxx(){})(); // 函数声明 function xxx()IIFE
IIFE: Immediately Invoked Function Expression(立即执行函数表达式)。
变量提升所有的声明(变量和函数)都会被“移动”到各自作用域的最顶端,这个过程称为“提升”。
函数声明会被提前到普通变量之前,如果存在同名的函数,后面的函数声明会覆盖前面的。
所有的变量都是先有声明,再有赋值。栗子:
var a = 2; // 第一步为编译阶段任务 var a; // 第二步执行阶段任务 a = 2;如何判断this
函数是否在new中调用?如果是,this绑定的是新创建的对象。
函数是否通过call、apply或者硬绑定?如果是,this绑定的是指定的对象。
函数是否在某个上下文中调用?如果是,this绑定上下文对象。
如果都不是,使用默认绑定。严格模式绑定到undefined,否则为全局对象。
foo.call(null) 使用默认绑定规则。
箭头函数的绑定是无法被修改的(不适用于前4条规则),继承外层函数调用的this绑定。
属性描述符writeable:属性的值是否可以修改。
configable:属性的值可配置。如果是可以配置的,那么就可以使用defineProperty()方法来修改属性描述符。这种设置为单向,不可取消。意思是可以从true到false,但是不能从false到true。如果值为false则禁止删除这个属性。
enumerable:是否为可枚举的。如果是false那么在使用for...in的时候不会出现。
PS:今天看到本子上随意写的,记录下来,方便查看。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/89864.html
摘要:中几个最重要的大知识点面向对象事件异步交互面向对象在中可以把任意的引用和变量都看成是一个对象。我们可以写一个通用方法来模拟面向对象语言的多态 JavaScript中几个最重要的大知识点 面向对象 DOM事件 异步交互ajax 面向对象 在JS中可以把任意的引用和变量都看成是一个对象。面向对象的主要三个表现形式: 封装 继承 多态 1. 封装 1.1 单例模式 var obj={...
摘要:有兴趣的朋友可自行该知识点,这里件简单提下吧。并且可能一个点或者两个点不注意是不会产生多大性能影响,但是从多个点进行优化后,可能产生的就会是质的飞跃了 针对js文件的加载位置 在HTML文件中,标签是可以加在区域和区域的。这里鉴于JavaScript执行和UI渲染的单线程原因,如果js文件载入会阻塞后面对于页面的解析过程,页面会等到js文件完全加载并运行后才继续执行该做的操作。那么问题...
摘要:使用来移除事件,参数必须与要移除的事件处理函数地址指针相同。在低版本浏览器中,绑定级事件的方法为中的级事件的事件处理程序都是在冒泡阶段执行的。 JavaScript中几个最重要的大知识点 面向对象 DOM事件 异步交互ajax 事件 事件就是文档和浏览器的瞬间交互行为 1.事件类型 点击: click 滚轮: scroll 滑动: move 进入: enter 加载: load ...
摘要:作为前端开发必须掌握的一门语言,因为语言的灵活性,有些知识点看起来简单,在真正遇到的时候,却不一定会直接做出来,今天我们就一起来看看几道题目吧题目这道题考察的知识点是运算符的优先级。 Javascript作为前端开发必须掌握的一门语言,因为语言的灵活性,有些知识点看起来简单,在真正遇到的时候,却不一定会直接做出来,今天我们就一起来看看几道题目吧 题目1 var val = smtg; ...
摘要:与响应不同的是,身份验证并不能提供任何帮助,而且这个请求也不应该被重复提交。 JavaScript中几个最重要的大知识点 面向对象 DOM事件 异步交互ajax AJAX AJAX是异步的javascript和xml(Asynchronous Javascript And XML)的缩写,用于网页局部刷新,提升用户浏览体验 通常前端程序员关于AJAX的掌握仅仅停留在会用AJAX发送...
阅读 2166·2021-11-19 09:55
阅读 2613·2021-11-11 16:55
阅读 3142·2021-09-28 09:36
阅读 1887·2021-09-22 16:05
阅读 3225·2019-08-30 15:53
阅读 1791·2019-08-30 15:44
阅读 2878·2019-08-29 13:10
阅读 1318·2019-08-29 12:30