我只是想知道这两者有什么区别
File1.js
$(function()
{
function MyFunction()
{
// some code here
}
});
File2.js
$(function()
{
// call it.
MyFunction();
});
File1.js
function MyFunction()
{
// some code here
}
File2.js
$(function()
{
// call it.
MyFunction();
我知道'js‘中的函数有词法作用域(即函数在定义时创建其环境(作用域),而不是在执行时创建)。
function f1() {
var a = 1;
f2();
}
function f2() {
return a;
}
f1(); // a is not defined
当我运行'f()‘时,它会返回内部函数。我明白了,这就是'return‘的作用!
function f() {
var b = "barb";
return function() {
return b;
}
}
cons
我想将一个变量传递给另一个文件。我在新的js文件中使用了lat变量,但不起作用。 在address.php中: <div class="saveaddress">Click me</div>
<script>
var lat;
var lng;
function displayLocation(position) {
var lat = position.coords.latitude;
var lng = position.coords.longitude;
}
<
Js社区我是JS的新手,我对JS作用域感到困惑,在这个例子中,我有一个if语句,我在块var age和this中定义了一个局部作用域,然后我控制台记录了这个变量age,我得到了25,这是为什么?是因为if语句是全局定义的,所以在块中定义的语句也是全局的吗?还有一件事,我注意到年龄变量被附加到全局对象,这是我记录它的窗口,我找到了年龄变量,但我不确定为什么会发生这种情况?
if(true){
var age = 25;
}
console.log(age);
由于我现在已经开始学习js,所以我对javascipt很陌生,我对var非常困惑,据说它是函数作用域和块作用域;
如果是,那么我们如何在该功能之外访问它们!?假设我想从另一个类中使用它(我不知道可能通过创建某个对象或其他什么方法)(我想我们不能在这里创建对象!)因为它是一种基于函数式编程的语言,所以我猜!:()
var y = "global";
if (y === "global") {
var y = "block-scoped";
console.log(y); // expected output: block-scoped
}
我不明白这一点--在if条件中定义的var怎么能在该条件之外使用?
示例JS:
if (1===2) {
var myVar = "I live in brackets";
}
$("#debug").append("myVar = " + myVar);
$("#debug").append("but I'm about to throw a 'not defined' exception right... now " + firstAppearanceVar);
渲染:myVar =
我很难理解JavaScript函数级别的作用域,作为一个C#程序员,我会尝试通过代码来解释它:
CODE#1
//Problem
//if same named variable (as in global scope) is used inside function scope,
//then variable defined inside function will be used,global one will be shadowed
var a = 123;
function func() {
alert(a); //returns undefined,why not just
我昨天看了这个:,我一直在想如何改进我的javascript。在重写一个在firefox中看起来非常起伏的动画时,我正在努力记住他说的每一句话。
我想知道的一件事是,for循环是否会添加到作用域链中。Zakas谈了很多关于闭包如何添加到作用域链上,以及访问局部作用域之外的变量往往需要更长的时间。使用for循环,既然您可以在第一个语句中声明一个变量,这是否意味着它正在向链中添加另一个作用域?我认为不会,因为扎卡斯也说过do-while、while和for循环之间没有区别,但看起来还是会有区别。
我问这个问题的部分原因是,我经常在JS库中看到这样的代码:
function foo(){
v
我一直在试图巩固我对JS执行上下文的理解,但是我很难得到关于为什么下面的代码没有打印出"hello world“的解释。
var foo = "foo";
function test1() {
console.log(foo)
var bar = "hello world";
test2();
}
function test2() {
console.log(bar);
}
test1();
我的理解是,在test1()中执行的test2()可以访问test1()的执行上下文,并且应该能够通过将作用域链向上移动到定义
function Foo1() {
var bar = 'test';
}
AFAIK中,不可能从全局作用域访问变量bar,除非编写特权函数来执行此操作,例如
function Foo2() {
var bar = 'test';
this.read = function(){return bar;};
}
除了用Foo2重新定义整个函数Foo1之外,Greasemonkey (或任何其他工具)是否提供了访问变量栏的方法?Greasemonkey有GM_xmlhttprequest,可以绕过某些限制,所以我想知道它是否也能做到这一点,并为
我正在尝试学习JS,关于javascript闭包,我有一个问题-
function fooOuter(){
var a = 10;
var b = 20;
return function fooinner(x){
return a + b + x;
};
}
这是否意味着Javascript中的内部函数存储了对同一作用域中所有变量的引用。也就是说,在这种情况下,fooinner存储变量a和b的引用。
我正在考虑在JS中进行范围界定,并尝试了以下代码:
let a = 1;
for (let a of [2,3,4]) {
let a = 5;
}
我预计这会按照Redeclaration of let a的思路抛出一个错误,因为我假设for循环中的let a将与内部或外部let a发生冲突。但事实并非如此。
因此,我尝试了以下操作,以确保它没有在父作用域中声明:
let a = -1;
for (let a = 0; a < 5; a++) {
console.log(a);
}
console.log(a)
# Result: 0, 1, 2, 3, 4, -1
因
我对单元测试很陌生,我试图理解如何对node.js项目进行单元测试,但我不知道为什么我的当前测试不起作用。
我有两个文件fed.js (src)和fed.spec.js (规范)
这是我在运行这个时所遇到的错误.
错误:
Snap should return 142
Expected undefined to be 142.
Error: Expected undefined to be 142.
The Jist:
我正在尝试运行一个测试,以确保变量AllowanceAdditional (位于fed.js中)等于142个。
因此,我运行了一个茉莉花单元测试(位于fed.spec.js中),
我主要用JS编写代码,但我猜这将适用于许多语言。 在函数中使用全局/更高作用域变量与使用传递到函数中的变量之间的有效区别是什么,反之亦然? let somevariable = 5 ;
function somefuntion() {
let scopedvariable = 10;
return scopedvariable*myvariable
}
somefunction();
// OR
let myvariable = 5 ;
function somefuntion(somevariable ) {
let scopedvariable = 10;
re