JavaScript函数表达式与函数声明
什么是函数?
函数是事件驱动或者被调用时执行的重复代码块。
作用域:
1. 全局作用域
2. 函数作用域(局部作用域)
var i = 100; //全局作用域
function fun(){
var j = 10; //局部作用域
console.log(i + j);
}
fun();
全局作用域与函数作用域是相对的,比如:
i是全局作用域,j和k是函数作用域,而j是k的全局作用域。
var i = 100; //全局作用域
function fun(){
var j = 10; //局部作用域
function fun2(){
var k = 20;
}
}
fun();
使用var关键字声明的变量不是全局就是局部,不是var声明的变量都是全局变量。
function fun(){
j = 10; //局部作用域
function fun2(){
var k = 20;
}
}
fun();
console.log(j);
console.log(k)
返回值 j = 10;
k is not defined!
函数的表达式:
var fun1 = function fun(){
console.log("hello");
}
函数表达式:将函数赋给fun1之后函数名fun将被放弃,这意味着后面对函数的调用,只有fun1有效,而fun是无效的,他只有在返回函数名的之后,才有fun名称。
fun1.name ---->fun
fun.name ---->fun is not defined !
fun1.length ----->5
fun.length ----->fun is not defined !
函数的声明:
function fun2(){
console.log("world");
}
区别:
函数表达式可以直接被执行符号执行,而函数声明不能,只有函数声明转换为函数表达式是才可以被执行符号执行。
函数声明变为函数表达式,只需要在前面添加"+","-","!"这三种中的其中一个就行。
+function fun(){ //函数声明 ,在函数的前面可以加上+ - !可以让函数声明变成函数表达式
console.log("hello");
}()
var fun2 = function(){ //函数表达式
console.log("world");
}()
立即执行函数:
好处:避免写全局变量,所有的内容全部都卸载立即执行函数中。
立即执行函数必须是函数表达式。
立即执行函数的两种表现形式:
1. (function(){})()
2. (function(){}())
两者在功能上没有什么区别,主要看编程人员的习惯。
JavaScript函数表达式与函数声明的更多相关文章
- js函数表达式和函数声明的区别
我们已经知道,在任意代码片段外部添加包装函数,可以将内部的变量和函数定义"隐 藏"起来,外部作用域无法访问包装函数内部的任何内容. 例如: var a = 2; function ...
- 第七章 函数表达式和函数声明,关于this对象 ,私有作用域(function(){})() ,私有变量和特权方法
一:函数表达式和函数声明 1:函数声明和函数表达式的区别 ①函数声明不需要分号结尾 ②函数声明有函数提升的特点 ③函数声明后面不能跟圆括号直接调用,因为javascript将function关键字当作 ...
- 变量声明置顶规则、函数声明及函数表达式和函数的arguments属性初始化
一.变量声明和变量赋值: if (!("a" in window)) { ; } alert(a);//a为? 你可能认为alert出来的结果是1,然后实际结果是“undefine ...
- js基础:函数表达式和函数声明
函数表达式和函数声明的区别.实际上,解析器在向执行环境中加载数据是,对函数表达式和函数声明并非一视同仁.解析器会率先读取函数声明,并使其在执行任何代码之前可用.而函数表达式,则必须等到解析器执行到它所 ...
- js中 函数声明/函数表达式/匿名函数/箭头函数/立即执行函数
函数声明: function add(a, b) { // ... } 1.顾名思义,声明一个函数, 用关键字 “function” 来告诉,这是一个函数. 2.任何地方,想用就可以拿过来使用 函数表 ...
- JS中函数表达式与函数声明的区别
hello,沐晴又来更新啦,今天呢,跟大家讲讲让人头疼的函数表达式和函数声明,反正我当初看那本高级程序的时候,是没怎么看太透,哈哈.我是个比较重基础的人,跟我一起探讨函数表达式和函数声明的世界吧. 首 ...
- javascript笔记05:函数表达式和函数语句的区别
1.首先是函数语句: myfunc(); function myfunc() { //执行一些语句 } 当函数语句被定义的时候,在一个脚本代码被优先考虑,因此,无论该函数是定义之前或者定义之后都可以被 ...
- JavaScript 函数声明,函数表达式,匿名函数,立即执行函数之区别
函数声明:function fnName () {-};使用function关键字声明一个函数,再指定一个函数名,叫函数声明. 函数表达式 var fnName = function () {-};使 ...
- javascript 函数声明与函数表达式的区别
先看一段代码 var f = function g() { return 1; }; if (false) { f = function g(){ return 2; }; } alert(g()); ...
随机推荐
- 金融量化分析【day110】:Pandas的Series对象
一.pandas简介安装 pandas是一个强大的python数据分析的工具包 pandsa是基于NumPy构建的 1.pandas的主要功能 1.具备对其功能的数据结构DataFrame.Serie ...
- Java多线程:向线程传递参数的三种方法
在传统的同步开发模式下,当我们调用一个函数时,通过这个函数的参数将数据传入,并通过这个函数的返回值来返回最终的计算结果.但在多线程的异步开发模式下,数据的传递和返回和同步开发模式有很大的区别.由于线程 ...
- IE提示“Internet Explorer已限制此网页运行脚本或ActiveX控件”的解决办法
在页面html开始标签和head开始标签中间新增一行,添加以下代码: <!-- saved from url=(0014)about:internet --> 或者 直接设置IE浏览器 工 ...
- jvisualvm安装visualgc插件
jdk1.7自带jvisualvm可以对java应用进行监控.其中有个插件visualgc可以查看jvm垃圾回收的具体信息.安装插件的步骤是打开jvisualvm,点击工具->插件,在可用插件列 ...
- 第十一节:Bundles压缩合并js和css及原理分析
一. 简介 1.背景:浏览器默认一次性请求的网络数是有上限的,如果你得js和css文件太多,就会导致浏览器需要多次加载,影响页面的加载速度, MVC中提供Bundles的方式压缩合并js和css,是M ...
- 基于89C51/52单片机的红外线遥控驱动
目录 说明 IR.h IR.c 说明 编码格式:NEC IR.h /************************************************************ * @Pr ...
- 查看和设置MySQL数据库字符集(转)
查看和设置MySQL数据库字符集作者:scorpio 2008-01-21 10:05:17 标签: 杂谈 Liunx下修改MySQL字符集:1.查找MySQL的cnf文件的位置find / -ina ...
- 项目改bug期间总结
kotlin中使用labda 表到时注意参数,另外setOnClickListener() 和 setOnClickListener{} 差别很大的,使用要细心, 因为这个问题拿了大半天闷, 最后还是 ...
- 【Java编程思想笔记】注解1-简单了解注解
文章参考:https://www.cnblogs.com/xuningchuanblogs/p/7763225.html https://www.cnblogs.com/xdp-gacl/p/3622 ...
- laravel5.4 打印输出 sql 语句
直接打印 sql 语句 DB::connection('test_link')->enableQueryLog(); //执行代码 $log = DB::connection('test_lin ...