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()); ...
 
随机推荐
- Python装饰器的进阶
			
带参数的装饰器 示例一:Python自带的装饰器函数 from functools import wraps import time def Time(func1): @wraps(func1) de ...
 - BOM:浏览器对象模型之浏览器剖析入门
			
BOM简介 BOM与DOM的关系 BOM对象包含的内容 重新认识浏览器 一.分裂的BOM和被收服的DOM BOM定义:是browser object model的缩写,简称浏览器对象模型. 主要处理浏 ...
 - 2018-2019-2 《Java程序设计》第5周学习总结
			
20175319 2018-2019-2 <Java程序设计>第5周学习总结 教材学习内容总结 本周学习<Java程序设计>第六章: 接口 实现接口 接口的UML图 接口回调 ...
 - ArcMap修改粘滞移动容差防止要素在选择时无意拖动移动
			
粘滞移动容差将设置一个最小像素数,鼠标指针必须在屏幕上移动了此最小距离时,所选要素才会实际发生移动. 设置粘滞移动容差的结果是延迟移动所选要素,直到指针至少移动了这段距离.此方法可用于在使用“编辑”工 ...
 - C++-int类型整数超出范围后的处理
			
最近做了一道题目: Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 123 Output: ...
 - Beamer 中的页面链接
			
\documentclass[]{beamer} \usetheme{Madrid} \usenavigationsymbolstemplate{} \title{Main Title} \autho ...
 - RT-SA-2019-007 Code Execution via Insecure Shell Functiongetopt_simple
			
Advisory: Code Execution via Insecure Shell Function getopt_simple RedTeam Pentesting discovered tha ...
 - 找不到或无法加载主类(Could not find or load main class)
			
一般可能会是包名引起的,还有可能就不小心加上了.class后缀 解决方案如下 可以加上目录或者使用符号 . ,注意要用空格隔开 java -cp d:\sample HelloWorldjava -c ...
 - phpstudy 2016 切换Nginx+php7.0版本所需运行库 vc14 + 安装redis拓展
			
去微软官方下载vc14的运行库 链接:https://www.microsoft.com/en-us/download/details.aspx?id=48145 32位运行库 安装成功 切换版本成功 ...
 - Web应用程序的敏感信息-隐藏目录和文件
			
Web应用程序的敏感信息-隐藏目录和文件 0x1.场景 Web应用程序根文件夹中可能存在大量隐藏信息:源代码版本系统文件夹和文件(.git,.gitignore,.svn),项目配置文件(.npmrc ...