相关疑难解决方法(0)

可变吊装

alert(myVar1);
return false;
var myVar1;
Run Code Online (Sandbox Code Playgroud)

上面的代码在IE,FF和Opera中引发错误,说明return语句必须进入函数.但它undefined在Safari和Chrome中有效(显示).

上面的代码已经在全球范围内编写.在所有功能之外.

任何原因?

javascript hoisting

33
推荐指数
3
解决办法
1万
查看次数

如果JavaScript是一种解释型语言,如何提升工作?

我对解释器的理解是它逐行执行程序,我们可以看到即时结果,不像转换代码的编译语言,然后执行它.

我的问题是,在Javascript中,解释器如何知道变量是在程序中的某个地方声明并将其记录为undefined

考虑下面的程序:

function do_something() {
  console.log(bar); // undefined (but in my understanding about an interpreter, it should be throwing error like variable not declared)
  var bar = 111;
  console.log(bar); // 111
}
Run Code Online (Sandbox Code Playgroud)

被隐含地理解为:

function do_something() {
  var bar;
  console.log(bar); // undefined
  bar = 111;
  console.log(bar); // 111
}
Run Code Online (Sandbox Code Playgroud)

这是如何运作的?

javascript variables hoisting

7
推荐指数
1
解决办法
792
查看次数

方案:何时使用let,让*和letrec?

let,let*和letrec有什么区别?

请给出详尽的解释和例子.

scheme let

6
推荐指数
1
解决办法
1万
查看次数

Javascript 中提升的主要优点是什么?

前几天,我接受了一次采访,其中一个问题是“什么是吊装?” 然后我把吊装的概念讲得很透彻,然后面试官问我,吊装的主要优点是什么?我无法回答。javascript 中提升的主要优点到底是什么?

javascript hoisting

6
推荐指数
1
解决办法
4609
查看次数

是否有提升变量的目的?

我最近一直在学习很多Javascript,而且我一直在努力理解提升变量的价值(如果有的话).

我理解(现在)JS是一个双程系统,它编译然后执行.另外,我理解var关键字'exists'在它声明的词法范围内,因此如果在引擎分配值之前调用它,那么为什么它是'undefined'.

问题是,为什么这甚至重要?有什么用途可以提升你不能不提升的变量?我觉得它只会创建不太可读的代码而没有收获......

是否存在提升变量有用的示例?

javascript hoisting

5
推荐指数
1
解决办法
314
查看次数

为什么以及什么时候会立即忽略变量声明,并在后续查询中覆盖函数声明?

在遵循Kyle Simpson 在Pluralsight上的Advanced JavaScript 时,我遇到了这段代码,它应该证明函数声明变量声明之前得到(预)编译:

foo();
var foo = 2;
function foo() { console.log("bar"); }
function foo() { console.log("foo"); }
Run Code Online (Sandbox Code Playgroud)

(请注意,上面的代码要么输入一行有空格而不是换行符,要么使用SHIFT+ENTER防止在输入整个代码之前立即执行。)在Node中输入上面整个代码的立即结果或 (Chrome) 控制台(并按 Enter 键)是:

  foo                                                                                                   
< undefined  
Run Code Online (Sandbox Code Playgroud)

解释 Kyle 的解释,第一个function foo声明被第二个覆盖,因此foo输出到控制台,并且由于foo已经声明为函数,var foo因此(预)编译器忽略该声明。

眼前的结果支持了理论忽略,然而,随后的调查foofoo()展示一个不同的故事:

> foo                                                                                                   
2                                                                                                       
> foo()                                                                                                 
Uncaught TypeError: foo is not a function                                                               
> 
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么以及何时被忽略的声明var foo = 2;生效,当立即执行产生时:

  foo
< undefined  
Run Code Online (Sandbox Code Playgroud)

我的理解是 JavaScript 引擎(预)编译解析步骤应该注意两个函数的声明,然后是变量的声明,按照这个顺序,然后,在执行步骤,foo(); …

javascript

5
推荐指数
1
解决办法
151
查看次数

标签 统计

javascript ×5

hoisting ×4

let ×1

scheme ×1

variables ×1