Javascript中几个令人困惑的概念总结
一窗口;
var对象{ { {
名称:我的对象
getName:函数(){
返回this.name;
}
};
getName()方法只返回值的this.name.the以下几个电话object.getname()
方式与结果。
object.getname(对象); / /我的
(对象。getName)(我的); / /对象
(object.getname =对象。getName)(); / / 窗口
第三例(对象。getName =对象。getName);相当于VAR FN =(对象。getName =对象。getName);FN();
二
功能outputnumbers(计数){
对于(var i = 0;i <计数;i + +){
警报(i);
}
var i; / /重新声明变量
警报(i);
}
(5)outputnumbers;
Javascript从不告诉您是否多次声明了相同的变量;在这种情况下,它只查看后续的声明。
参见(但是,它在后续声明中执行变量初始化)。Anonymous函数可以用来模拟块级作用域并避免这个问题。
三
函数(){
这里是块级作用域
}()!
此代码可能会导致语法错误,因为Javascript使用函数关键字作为函数声明的开始和函数。
数字声明不能跟随括号。但是,函数表达式可以跟着括号。将函数声明转换为函数表达式,
只要在下面加上一对圆括号就可以了。
(函数(){())
这里是块级作用域
});
四
功能outputnumbers(计数){
(函数(){())
对于(var i = 0;i <计数;i + +){
警报(一);
}
});
警报(i);导致错误!
}
在改写outputnumbers()函数,我们插入一个私人范围外循环。匿名
函数中定义的任何变量在执行结束时都会被销毁,因此变量i只能在循环中使用,并且在使用后被销毁。
在私有范围内,可以访问变量计数,因为匿名函数是一个可以访问包含域的闭包。
所有的变量。
这种技术通常在全局范围之外的函数中使用,从而限制了将太多变量和函数添加到全局范围。
总的来说,我们应该尽量少地将变量和函数添加到全局范围内。
在应用程序中,太多的全局变量和函数很容易导致命名冲突。
为了使用自己的变量,您不必担心把全局范围弄得一团糟:
(函数(){())
var现在=新日期();
如果(现在,获得当前的月份)(0)(now.getdate = = = = 1){
警惕(新年快乐)!;
}
});
将以上部分放在全球范围内,可用于确定哪一天是1月1日;如果到了今天,它将被使用。
这个家庭表示祝贺新年,这个变量现在是匿名函数中的局部变量,我们不必在全局范围内。
在它里面创造它。
以上是本文的全部内容,希望大家能喜欢。