微信预约小程序制作_快速了解 JavaScript 中的 LHS 和 RHS 查询的用法

  • 栏目:公司新闻 时间:2021-01-11 14:59 分享新闻到:
<返回列表

快速理解 JavaScript 中的 LHS 和 RHS 查询的用法       本篇文章主要介绍了快速理解 JavaScript 中的 LHS 和 RHS 查询的用法,有一定的参考价值,感兴趣的小伙伴们可以参考一下

先看原书对一个赋值操作的拆解说明:
变量的赋值操作会执行两个动作,首先编译器会在当前作用域中声明一个变量(如果之前没有声明过),然后在运行时引擎会在作用域中查找该变量,如果能够找到就会对它赋值。 --- 《你不知道的JavaScript(上卷)》 P7

而要讲的 LHS 和 RHS 就是上面说的对变量的两种查找操作,查找的过程是由作用域(词法作用域)进行协助,在编译的第二步中执行。

LHS 和 RHS

字面意思其实是 Left Hand Side和 Right Hand Side 即左手边和右手边 一般可以理解为 赋值操作的左侧和右侧

先看个例子一

console.log(a);

这里对 a 是一个 RHS 引用,因为 a 并没有赋予任何值,目的是为了取到 a 的值并打印出来。

a = 2;

这里对 a 是一个 LHS 引用,因为实际上我们不关心当前的值是什么,只是想要把 a 赋值为 2。

再看例子二

function foo(a) {
 console.log(a); // 2
foo(2);

最后一行foo(..)函数的调用需要对 foo 进行 RHS 引用,意味着是取到 foo 的值,并且 (..)意味着 foo 需要被执行,因此它最好是一个函数类型的值
其中有一个容易被忽略的隐式赋值操作 a = 2,它发生在 2 被当做实参传入 foo 中时。即实参 2 传给了形参 a,需要一个 LHS 查询 console 那一行还有对 a 的一次 RHS 引用(或者叫查询),同时console.log(..)本身也需要一个 RHS 引用,即对 console 对象进行 RHS 查询,并且检查得到的值中是否有一个叫做 log 的方法。 书中有一段引擎和作用域的对话,有助于很好的理解例子二,

小测验

function foo(a) {
 var b = a;
 return a + b;
var c = foo(2);

试试找出其中的3处 LHS 查询,4处 RHS 查询

答案:

LHS 查询:

c = ..;
a = 2(隐式变量分配)
b = ..

RHS 查询

foo(2..
= a;
a ..
.. b

小结

参考原书中文版P12,英文版见

作用域是一套规则,用于确定在何处以及如何查找变量(标识符)。 如果查找的目的是对变量进行赋值,就会使用 LHS 查询;如果目的是获取变量的值,就会用 RHS 查询。 赋值操作会导致 LHS 查询。 = 操作符或调用函数时传入参数的操作都会导致关联作用域的赋值操作, 即都会导致 LHS 查询。 JavaScript 引擎首先会在代码执行前对其进行编译,在这个过程中,像var a = 2 这样的声明会被分解成两个独立的步骤: 首先,var a在其作用域中声明新变量。这会在最开始的阶段,也就是代码执行前进行。 接下来,a = 2会查询(LHS查询)变量 a 并对其进行赋值。 LHS 和 RHS 查询都会在当前执行作用域中开始,如果有需要(也就是说它们没有找到所需的标识符),就会向上级作用域继续查找目标标识符,这样每次上升一级作用域,最后到达全局作用域,无论找到或没找到都将停止。 不成功的 RHS 引用会导致抛出 ReferenceError 异常。不成功的 LHS 引用会导致自动隐式地创建一个全局变量(非严格模式下),该变量使用 LHS 引用的目标作为标识符,或者抛出 ReferenceError 异常(严格模式下)。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持凡科。


分享新闻到:

更多阅读

微信预约小程序制作_快速了解 JavaScript

公司新闻 2021-01-11
迅速了解 JavaScript 中的 LHS 和 RHS 查寻的使用方法 首先看原书对一个取值实际操作的拆卸...
查看全文

广州凡科互联网科技股份有限公司招聘运

公司新闻 2021-01-11
招聘人数:17职位信息职位描述:1.负责淘宝、天猫日常推广,熟练运用各营销工具,提升店铺...
查看全文

广州凡科互联网科技股份有限公司招聘女

公司新闻 2021-01-11
招聘人数:16职位信息岗位职责:需要跑万佳 13行女装批发市场去拍视频,也会在工作室拍视频...
查看全文
返回全部新闻


区域站点: 南丰县免费抠图换背景软件   南宫市网页效果图制作   囊谦县在线抠图软件   南和县手机抠图   南华县免费抠图换背景软件   南江县网页效果图制作   南京市在线抠图软件   南靖县手机抠图   南康市免费抠图换背景软件   南乐县网页效果图制作   南陵县在线抠图软件   南宁市手机抠图   南平市免费抠图换背景软件   南皮县网页效果图制作   南市区在线抠图软件   南通市手机抠图   南投县免费抠图换背景软件   南雄市网页效果图制作   南溪县在线抠图软件   南阳市手机抠图   南漳县免费抠图换背景软件   南召县网页效果图制作   南郑县在线抠图软件   那坡县手机抠图   那曲县免费抠图换背景软件   纳雍县网页效果图制作   讷河市在线抠图软件   内黄县手机抠图   内江市免费抠图换背景软件   内丘县网页效果图制作   内乡县在线抠图软件   嫩江市手机抠图   聂荣县免费抠图换背景软件   尼玛县网页效果图制作   尼木县在线抠图软件   宁安市手机抠图   宁波市免费抠图换背景软件   宁城县网页效果图制作   宁德市在线抠图软件   宁都县手机抠图   宁国市免费抠图换背景软件   宁海县网页效果图制作   宁化县在线抠图软件   宁晋县手机抠图   宁陵县免费抠图换背景软件   宁明县网页效果图制作   宁南县在线抠图软件   宁强县手机抠图   宁陕县免费抠图换背景软件   宁武县网页效果图制作   宁乡市在线抠图软件   宁阳县手机抠图   宁远县免费抠图换背景软件   农安县网页效果图制作   磐安县在线抠图软件   盘锦市手机抠图   盘山县免费抠图换背景软件   磐石市网页效果图制作   盘州市在线抠图软件   蓬安县手机抠图   澎湖县免费抠图换背景软件   蓬莱市网页效果图制作   彭山县在线抠图软件   蓬溪县手机抠图   彭阳县免费抠图换背景软件   彭泽县网页效果图制作   彭州市在线抠图软件   偏关县手机抠图   平安县免费抠图换背景软件   平昌县网页效果图制作   平定县在线抠图软件   屏东县手机抠图   平度市免费抠图换背景软件   平果县网页效果图制作   平和县在线抠图软件   平湖市手机抠图   平江县免费抠图换背景软件   平乐县网页效果图制作   平凉市在线抠图软件   平利县手机抠图   平罗县免费抠图换背景软件   平陆县网页效果图制作   屏南县在线抠图软件   平泉市手机抠图   屏山县免费抠图换背景软件   平顺县网页效果图制作   平塘县在线抠图软件   平潭县手机抠图   平武县免费抠图换背景软件   萍乡市网页效果图制作   平乡县在线抠图软件   平阳县手机抠图   平遥县免费抠图换背景软件   平阴县网页效果图制作   平邑县在线抠图软件   平远县手机抠图   平舆县免费抠图换背景软件   皮山县网页效果图制作   普安县在线抠图软件   浦北县手机抠图   浦城县免费抠图换背景软件   普洱市网页效果图制作   普格县在线抠图软件   浦江县手机抠图   普兰县免费抠图换背景软件   普宁市网页效果图制作   莆田市在线抠图软件   迁安市手机抠图   乾安县免费抠图换背景软件   潜江市网页效果图制作   潜山市在线抠图软件  

友情链接: 淘宝做图片用什么 类似图怪兽的软件 招牌设计图片 抠图在线 手机版

Copyright © 2002-2020 在线抠图软件_手机抠图_免费抠图换背景软件_网页效果图制作_通道怎么抠图 版权所有 (网站地图) 备案号:粤ICP备10235580号