上一节,我们知道了函数作用域,今天,就来了解一下函数表达式吧!
大家是否还记得,一个函数变成表达式的方法,就是用括号将函数体包裹起来呢。
![cd45c184c4bd7b53ba7c62d767cfc896.png](https://i-blog.csdnimg.cn/blog_migrate/6437b1cec488e6ef6808310f160f2649.jpeg)
函数表达式
JS中,函数也是一种数据,语法上,函数可以用在任何需要数据的地方。
换句话来说,JS中函数的地位还是比较高的,函数算是一等公民。
函数是一个引用类型,将其赋值给一个变量时,变量中保存的是函数的地址。
![1a9c9a610cdb154c9cdad6256706c995.png](https://i-blog.csdnimg.cn/blog_migrate/caa4d8d46e1764210a034666a7b9fe67.jpeg)
函数字面量和函数表达式没有本质的区别,唯一的区别在于,函数表达式无法提升,而函数字面量是可以提升的。
函数表达式的调用
var a = function ( ){ console.log( ' aaaa ' ); } a();
函数可以赋值到任何数据中,对象,变量,数组都是可以的。
var obj = { a : function(){ console.log( 12345 );}, b : 123}这里,直接通过obj来调用a就可以;var c = obj.a;c(); //这里输出12345;
this关键字
1、在全局环境中,this关键字固定指向window;
![491d45a63c5572007f2db8f06d5bcd7d.png](https://i-blog.csdnimg.cn/blog_migrate/b99c77234332004aa2c16b85cb9588ea.jpeg)
2、在函数作用域中,this关键字取决于函数是如何调用的。
(1)直接调用,this关键字指向全局(window)
![61b6d19fffc94dc570bd542d5e300bae.png](https://i-blog.csdnimg.cn/blog_migrate/15a29c8e0c87351abbb7cc78e4e456e6.jpeg)
(2)通过一个对象调用的时候,格式为 “ 对象.属性() ”,这时,this关键字的指向为该对象。即为是谁调用this指向谁。
![54aecc3cec9e9fee0ff1d98f96c21ef0.png](https://i-blog.csdnimg.cn/blog_migrate/52dc7cae3258c72bf5632afd5ba26a29.jpeg)
前些课节中,是有介绍this指向问题的。所以,今天就不做太多讲解。
希望对大家有所帮助。
祝愿大家的前端之路越走越长,越走越顺。