当javaScript从入门到提高前需要注意的细节:函数部分
在javaScript中,函数是一个很基础的对象,同样也是非常随意,定义起来很随意,用起来那是更加随意。以下说明在javaScript中声明一个函数那是多麽的随意
[html]
function fun1() {//声明一个函数
}
function() { //声明一个匿名函数
}
var fun2 = function() {//声明一个变量指向一个匿名的函数表达式
}
var fun3 = function fun4() {//声明一个变量指向一个非匿名的函数表达式
}
function fun5() {
return function() { //返回一个匿名函数
}
}
那function和var的区别有哪些?我们不讨论深奥的,我们看下哪些运行结果
[html]
alert(typeof fun1); //function
alert(typeof fun2); //undefined
alert(typeof fun3); //undefined
alert(typeof fun4); //function
alert(typeof fun5); //function
function fun1() {//声明一个函数
}
function() { //声明一个匿名函数
}
var fun2 = function() {//声明一个变量指向一个匿名的函数表达式
}
var fun3 = function fun4() {//声明一个变量指向一个非匿名的函数表达式
}
function fun5() {
return function() { //返回一个匿名函数
}
}
我们可以看到function比var还要优先。
我们之前说变量的时候已经说过,一个变量可以被反复赋值,对于函数来说,这可以吗?
对于习惯在静态语言下写代码的人,看到如下代码估计要气愤了,这个是啥破代码?
[html]
function fun1() {
alert("Y");
}
function fun1() {
alert("N");
}
但事实上,这个代码是可以执行的,执行的结果暗示我们函数的名称会被自动的作为对象的一个属性,函数体就是属性的值了
[html]
fun1(); // n
this["fun1"](); // n
this.fun1(); // n
window["fun1"](); // n
window.fun1(); // n
现在我们把两个因素合起来看看,function在所有执行代码前先编译,且后面的function会覆盖前面的function定义,那么,如下的代码执行的是?
[html]
var input = 5;
switch (input) {
case 10:
function fun1() {
alert(10);
}
break;
case 5:
function fun1() {
alert(5);
相关新闻>>
- Javascript 兼容 IE6、IE7、FF 的“加入收藏”“设为首页”
- 好好学一遍JavaScript 笔记(一)——基础中的基础
- 好好学一遍JavaScript 笔记(二)——encode、数组、对象创建
- 好好学一遍JavaScript 笔记(三)——StringBuffer、prototype
- 好好学一遍javaScript 笔记(四)——Attribute、HTML元素、文档碎
- 好好学一遍JavaScript 笔记(五)——正则表达式基础
- 好好学一遍JavaScript 笔记(六)——正则表达式基础二
- 好好学一遍JavaScript 笔记(七)——RegExp对象与常用正则
- 好好学一遍JavaScript 笔记(八)——冒泡型事件、捕获型事件
- Gridx入门
- 发表评论
-
- 最新评论 更多>>