这是一个例子:
function one() {
var a = 1;
two();
function two() {
var b = 2;
three();
function three() {
var c = 3;
alert(a + b + c); // 6
}
}
}
one()?; //calling the function
Run Code Online (Sandbox Code Playgroud)
现在当我们调用函数one()时,结果是6.
所以关于范围链,所有变量都已解决,现在我有一个问题.
当所有变量通过范围链解析时,为什么我们需要这个" this "关键字?
所以如果我们有以下功能:
function a() {
var a = 'function a';
function b() {
var b = 'function b';
alert (a); //will be function a, without keyword this
alert (this.a); // what will be the effect of …Run Code Online (Sandbox Code Playgroud) 这是代码
obj = {
a: 'some value';
m: function(){
alert(this.a);
}
}
obj.m();
Run Code Online (Sandbox Code Playgroud)
结果是'some value'.
我听说这个关键字引用了函数的所有者是obj.现在的问题是上面代码中函数的所有者是obj这样的,为什么在函数拥有所有者时使用此关键字很重要,上面的代码应该按照以下方式工作
obj = {
a: 'some value';
m: function(){
alert(a);
}
}
obj.m();
Run Code Online (Sandbox Code Playgroud)
哪个不起作用我知道但为什么?
当我们在对象或全局中的任何地方定义函数时,javascript函数是否会存储在内存中一次。
function (){
alert("some value");
}
obj = {
m: function(){
alert('some value');
}
}
Run Code Online (Sandbox Code Playgroud) 所以这是一些代码
var name = 'ali';
function say() {
alert(name);
}
Run Code Online (Sandbox Code Playgroud)
因此,这将警告'ali',因为名称函数现在由全局对象拥有以下代码
var oobj {
var name: 'raziq',
say:function () {
alert (name);
}
}
oobj.say();
Run Code Online (Sandbox Code Playgroud)
所以现在say函数由oobj对象拥有,因此name属性应该警告'raziq'而不是'ali'.顺便说一句,我知道使用这个关键字
我的问题是什么会被提醒和你?