函数callbacks/copies,传递概念value/reference
Function callbacks/copies, concept of passing by value/reference
我正在复习一些基本的 CS 理解,但问题出现了;/在我脑海中。
我想知道是否有在 'functions'
上按值或引用传递的想法
Functions are one of the fundamental building blocks in JavaScript. A
function is a JavaScript procedure—a set of statements that performs a
task or calculates a value.
-quoted from developer.mozilla
我目前的理解是函数保存时的慌乱:我不明白函数是如何传递的。
考虑到在 javascript 中任何非原始类型都是对象类型,代码块作为对函数名称的引用传递。但是,我还被告知
'Javascript always pass by value so changing the value of the variable
never changes the underlying primitive (String or number).'
所以它是按值传递的吗?还是参考?所以这是我测试案例的尝试:
function example(){
console.log('hello');
}
这里的代码块'console.log('hello")'被保存到名为'example'
的函数变量中
那么在
的情况下
var example2 = example;
我希望函数 'example' 作为值传递给 'example2'
所以我尝试通过测试来检验我的假设是否正确:
function original(){
console.log('hello');
}
var Original = original;
original();
Original();
function original(){
console.log('Hello');
}
original();
Original();
老实说,我希望结果是
hello
hello
Hello
Hello
但实际结果却是
Hello
Hello
Hello
Hello
我以为是传引用,看了评论才知道是吊装问题;
所以我运行
var original = function(){
console.log('hello');
}
var Original = original;
original();
Original();
original = function(){
console.log('Hello');
}
original();
Original();
结果是
hello
hello
Hello
hello
这是由于提升,当您使用函数声明时会发生这种情况。如果你使用 use 函数表达式,那么你所期望的会发生:
var original = function(){
console.log('hello');
};
var Original = original;
original.value = 5;
original();
Original();
original = function(){ // changes original to point to a new function (does not affect Original)
console.log('Hello');
}
original();
Original();
console.log( Original.value );
我正在复习一些基本的 CS 理解,但问题出现了;/在我脑海中。
我想知道是否有在 'functions'
上按值或引用传递的想法Functions are one of the fundamental building blocks in JavaScript. A function is a JavaScript procedure—a set of statements that performs a task or calculates a value. -quoted from developer.mozilla
我目前的理解是函数保存时的慌乱:我不明白函数是如何传递的。
考虑到在 javascript 中任何非原始类型都是对象类型,代码块作为对函数名称的引用传递。但是,我还被告知
'Javascript always pass by value so changing the value of the variable never changes the underlying primitive (String or number).'
所以它是按值传递的吗?还是参考?所以这是我测试案例的尝试:
function example(){
console.log('hello');
}
这里的代码块'console.log('hello")'被保存到名为'example'
的函数变量中那么在
的情况下var example2 = example;
我希望函数 'example' 作为值传递给 'example2'
所以我尝试通过测试来检验我的假设是否正确:
function original(){
console.log('hello');
}
var Original = original;
original();
Original();
function original(){
console.log('Hello');
}
original();
Original();
老实说,我希望结果是
hello
hello
Hello
Hello
但实际结果却是
Hello
Hello
Hello
Hello
我以为是传引用,看了评论才知道是吊装问题;
所以我运行
var original = function(){
console.log('hello');
}
var Original = original;
original();
Original();
original = function(){
console.log('Hello');
}
original();
Original();
结果是
hello
hello
Hello
hello
这是由于提升,当您使用函数声明时会发生这种情况。如果你使用 use 函数表达式,那么你所期望的会发生:
var original = function(){
console.log('hello');
};
var Original = original;
original.value = 5;
original();
Original();
original = function(){ // changes original to point to a new function (does not affect Original)
console.log('Hello');
}
original();
Original();
console.log( Original.value );