美文网首页
函数声明与表达式

函数声明与表达式

作者: duJing | 来源:发表于2017-01-04 15:12 被阅读7次
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>函数声明与表达式</title>
</head>
<body>
<script>
/*
* 问题:函数有好几种表达方式:
* 1.函数声明:function aaa(){}
* 2.函数表达式:
* ①命名函数表达式 var a = function test(){};
* ②匿名函数表达式 var a = function () {};
* ③带位运算符的表达式
* (function aaa(){})
* ~function aaa(){}
* -function aaa(){}
* +function aaa(){}
* !function aaa(){}
* */




/*
* 问题:函数声明和函数表达式的区别?
* 1.函数表达式后接括号()可以直接调用执行,而函数声明不行
* 2.函数声明可以被提前解析出来
* */

/*
* 1.函数表达式后接括号()可以直接调用执行,而函数声明不行
* */

/*
* ①函数表达式
* */
// var a = function aaa(){ alert(1) }(); //命名函数表达式:1
// var a = function (){ alert(1) }(); // 匿名函数表达式:1
// (function aaa(){ alert(1) })(); // 运算符函数表达式:1
// !function aaa(){ alert(1) }() // 1

/*
* ②函数声明
* */
// function aaa() { alert(1) }(); //报错


/*
* 2.函数声明可以被提前解析出来
* */


/*
* ①函数声明
* 在ie中会出现函数别提前解析的情况
* */
/*if (true) {
function aaa() { alert(1) };
} else {
function aaa() { alert(2) };
}
aaa(); // chrome 1, Ie 2*/


/*
* ②函数表达式会不会提前解析函数?不会
* */
/*if (true) {
var a = function aaa() { alert(1) };
} else {
var a = function aaa() { alert(2) };
}
a();
aaa(); // chrome 报错, ie没反应*/



/*
* PS:将命名函数表达式的函数名赋值给变量时,该命名函数表达式在外层不能被访问
* */

/*var a = function test() {
// 在函数内部可以访问到命名表达式的名称
alert(typeof test); // function
}
// 在函数外层不可以访问到命名表达式的名称
alert(typeof test); // undefined*/


/*var a = 1;
if (function bbb(){ alert(a)}()){
a++;
alert(a); // 2
bbb(); // 不能访问
}*/



/*
* 布尔值为false的5种情况?null,undefined,null,'',0
* 其他为true
* 因为 console.log(function bbb(){ alert(a)}()); 弹出1,返回undefined
* if里面的语句不能执行,
* if后面的alert(b)返回undefined
* */
/* var a = 1;
var b;
if (b = function bbb(){ alert(a) }()){
a++;
alert(a); // 2
bbb(); // 不能访问
}
alert(b); // undefined*/



/*
* 布尔值为false的5种情况?null,undefined,null,'',0
* 其他为true
* 因为 console.log(function bbb(){ return a }()); 返回1
* if里面的语句可以执行,但是不能访问bbb()函数,会报错
* 因此下面的alert(b)没有反应
* */

var a = 1;
var b;
if (b = function bbb() {
return a
}()) {
a++;
alert(a); // 2
bbb(); // 不能访问
}
alert(b); // 没有执行,其实为1


</script>
</body>
</html>1


.

相关文章

  • JS函数基础(一)

    函数声明与函数表达式、声明的提前、arguments、“重载”、立即执行函数表达式 1. 函数声明和函数表达式有什...

  • 16. 函数与作用域

    函数声明和函数表达式的区别 函数声明 声明不必放在调用的前面 函数表达式 声明必须放到调用的前面 变量与函数的声明...

  • 函数与作用域链

    1.函数声明与函数表达式有什么区别 函数声明: function myFunction(){}函数表达式:var ...

  • 函数

    函数声明和函数表达式有什么区别 函数声明 函数表达式 函数声明和函数表达式的区别: 函数声明必须给定函数名称,函数...

  • 函数与作用域

    函数声明与函数表达式的区别 变量的声明前置与函数的声明前置 arguments 通过以下语句可将arguments...

  • 函数与作用域

    函数声明与函数表达式 参考 ECMA 标准规范 函数声明 function a(){ return 1; ...

  • web前端-js小记(3)-函数及作用域

    1. 函数声明和函数表达式有什么区别 函数声明 函数表达式 区别:函数声明不用把声明放到函数调用的前面,函数表达式...

  • JavaScript中的函数与闭包

    查阅书籍:JavaScript权威指南 函数声明与函数表达式 用函数声明定义的函数,函数可以在函数声明之前调用,而...

  • 函数声明的几种方式

    函数声明的几种方式 三种 : 函数声明(1),函数表达式(2~5),Function构造器(6) 函数声明与函数表...

  • 函数与作用域

    函数声明和函数表达式有什么区别 函数声明 函数表达式 区别 函数表达式结束后需要加;表示声明变量结束。 函数表达式...

网友评论

      本文标题:函数声明与表达式

      本文链接:https://www.haomeiwen.com/subject/kzwovttx.html