这是我去测试一种语言是否具有动态的名称解析。
function foo() {
function bar() {
print a
}
var a = 10
bar()
}
如果语言使用动态名称解析,代码应该打印10。否则,它会抛出一个未定义的错误。
Javascript打印10。但是Javascript使用变量提升,它将var a移动到最上面的foo并使我的测试无效。
编辑:如果我们可以删除JS中的变量,那么以下是一个很好的测试:
var a = 5
function foo() {
var a = 10
function bar
我想知道函数在javascript中声明的顺序。 function ex1() {
document.write("ex1")
}
function ex2() {
ex1();
}
ex2();
//result is ex1. function ex2() {
ex1();
}
function ex1() {
document.write("ex1")
}
ex2();
//result is ex1. 如果更改顺序,我预计会出现错误。我知道js使用吊装。但在顶部,我认为它应该是按顺序声明的。该函数是如何调用的?
JS:
var a = 10;
function test() {
alert(a);
var a = 20;
alert(a);
}
test();
上面的代码昨天和面试官讨论过了,我说第一次浏览器会警告10,下一次它会警告20,但我错了。它第一次发出不明警报,第二次报警20次。我很困惑,有谁能在理论上和实际中解释这背后的原因吗?
相关链接将非常有用。
我的JS代码是:
$(function () { //line-1
if(window.location.search.length >1){
//doSomething ;
areFieldsSet(); //call this function
} //end of if
var areFieldsSet = function(){
//do something
}
//do many things
} // end of line-1 function
现在,当我试图引用问题标题中描述的areFi
当我在JS中有几个接受参数和返回值的链式函数时,这个依赖是什么,我如何打破它?
示例
function a (arg1){
return res1;
}
function b (arg2){
function a(arg1);
return res2;
}
function c (arg3){
function b(arg2);
return res3;
}
c(arg3);
在debugger语句中断后,尝试调用foo会抛出。该函数似乎不像本地x变量那样在脚本的上下文或作用域中定义。
example.js脚本:
/**
* Source code example
*/
const x = 'x'
let y
function foo(param = 'foo') {
console.log(param)
}
// const f = foo // foo throws error if commented out and referenced from debugger
debugger
启动节点进程,同时监听检查器
我正在尝试打印Bil类中的gass方法。我希望在单击HTML中的按钮时将其打印出来。我收到一个错误,说
Uncaught ReferenceError: gass is not defined at HTMLButtonElement.onclick
(index.html:9).
此错误的原因可能是什么?
// My HTML Code
<button onclick="gass()">Gass for Volvo</button>
<p id="test"></p>
<script src
运行play framework版本2.3,尽管它可能不相关:
我有一个包含以下内容的html文件:
<html>
<head>
<script type="text/javascript"> if (typeof x === 'undefined') {console.log("x not defined");} else {console.log("in html, x is %s", typeof x);} </script>
<s
我正在做一个用纯javascript制作滑块的个人项目。但是js代码不起作用。当我单击next按钮时,控制台显示一个错误,指出next()不是一个函数。与“上一步”按钮一样,它显示没有定义prev()。我想尽我所能,但还是找不到答案。令人困惑的是,我声明了这两个函数,但在单击时,我收到一个错误,即函数不是函数。
next未捕获TypeError: next不是HTMLElement中的函数。(main.js:38)
JS代码:
var next = document.getElementById("next");
var prev = document.getElementBy
我得到了这个错误:
TypeError: Cannot read property 'prototype' of undefined
at Object.instantiate (http://localhost:3000/angular/angular.min.js:35:144)
at Object.<anonymous> (http://localhost:3000/angular/angular.min.js:35:435)
at Object.d [as invoke] (http://localhost:3000/angular/angular.min.
我正在经历javascript的提升概念。
var a = 2;
function a(){};
typeof a
// "number"
var a ;
function a(){};
typeof a
// "function"
我的问题是,为什么第一个代码的类型是数字,而不是在代码的第二部分可以看到的函数?
我刚刚了解了函数声明和函数表达式之间的区别。这让我怀疑我在AngularJS代码中做的事情是否正确。我正在遵循John Papa使用的模式,但现在它似乎与模块模式的典型JS方法不一致。John Papa在他的控制器和服务中大量使用了嵌套函数声明。这是不是很糟糕?
有什么理由支持这一点:
var foo = (function() {
var bar = function() { /* do stuff */ };
return {
bar : bar
};
}());
foo.bar();
关于这一点:
var foo = (function() {
因此,我正在尝试用JS编写一个数据结构可视化工具(这样我就可以在线托管它了)。似乎我的JS忽略了我的变量(并声称一些函数不存在),我不知道为什么。我会很感激你的帮助。
var stack = new Stack();
var defaultValueCounter = 0;
function push() {
var value = document.getElementById("add").value;
if (value === "") {
defaultValueCounter++;
value = def
根据谷歌JavaScript风格指南,函数声明不应该在块中声明,因为这不是ECMAScript的一部分。然而,我并不完全清楚什么是块。
具体地说,我有一个构造函数,我想在该构造函数的作用域中定义一个函数。这会不会算作一个块中的函数,因为它在{}的集合中?如果是这样,这是否意味着每个函数声明都必须是全局的?
一些好的衡量标准的代码:
错误的(?)
function Constructor() {
function Shout () { alert('THE BEST UX IS IN ALL CAPS.'); }
}
对吗(?)
function Constructor(
有人能给我解释一下吗:
var test = 5;
// prints 5;
function printMe1(){
console.log(test);
}
// prints "undefined"
function printMe2(){
console.log(test);
var test = 10;
}
这是因为printMe2创建了一个局部变量"test“吗?如果是这样的话,如果log语句是在它之后声明的,那么为什么它引用局部变量呢?
另外,如果JS是一种解释型语言,那么代码不是应该逐行解释吗?在哪种情况下,日志语句不应该知道
Stack Overflow上的答案是支持JS函数声明在变量声明之前提升。它基于非常早的Spec版本。 答案链接- Order of hoisting in JavaScript 指向其引用的规范的链接- https://www.ecma-international.org/ecma-262/5.1/#sec-10.5 该推理基于第10.5节的步骤8(c)。 现在,根据现代规范,有人能告诉我,在哪里讨论了这种提升顺序,或者仍然可以说函数声明在变量声明之前被提升? 链接到当前等级库- https://www.ecma-international.org/ecma-262/11.0/index.
此代码运行良好:
const a = 1;
{
const b = a; // let's use "a" in a sub-scope
}
{
const a = 2; // let's override "a" in another sub-scope
}
..。但是,这段代码在第3行的a is not defined中失败:
const a = 1;
{
const b = a; // let's use "a" in a sub-scope <<< CRASH!! >>&g
我有一个nodejs项目,其中sample.js包含两个函数A,依赖于函数B的回调。
// smaple.js
//Both function are included in the same file
function B ( arg1 , callback ){
// do some async
async.map(arg1 , function(item, cb){
var a = item.a
var b = a*4