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()); ...
随机推荐
- MySQL_表锁_lock tables tableName read
pre.环境准备 1.建立两个表S,T,并插入一些数据 --创建表S create table S(d int) engine=innodb; ); --创建表T create table T(c i ...
- PHP7 学习笔记(十七)变量函数 - unset
https://secure.php.net/manual/zh/function.unset.php unset()函数用来清除.销毁变量,不用的变量,可以用unset()将它销毁. 1.unset ...
- WPF布局的应用
一 写在开头1.1 本文内容本文主要内容是使用WPF来实现几个简单的界面. 二 登录窗口小例子2.1 实现代码XAML代码: <Window x:Class="LoginDialog. ...
- Latex "Error: Extra alignment tab has been changed to \cr. "
Latex 编译时出现 Error: Extra alignment tab has been changed to \cr. 是因为\begin{tabular}后面的参数指定为7列,而实际排了8 ...
- [物理学与PDEs]第3章习题6 Lagrange 坐标下的一维理想磁流体力学方程组的数学结构
试讨论 Lagrange 形式下的一维理想磁流体力学方程组 (5. 33)-(5. 39) 的类型. 解答: 由 (5. 33), (5. 39) 知 $$\bex 0=\cfrac{\p p}{\p ...
- JavaScript事件的属性列表
HTML 4.0 的新特性之一是能够使 HTML 事件触发浏览器中的行为,比如当用户点击某个 HTML 元素时启动一段 JavaScript.下面是一个属性列表,可将之插入 HTML 标签以定义事件的 ...
- CDH5.16.1启动报错:Invalid value set for db.setupType, the valid values are EMBEDDED or EXTERNAL
1 自己的配置文件已经添加了配置,但是还是报错,由于是自建数据库 com.cloudera.cmf.db.setupType=EXTERNAL 2,索性注释掉这个参数,启动就ok了
- 【Nuxt】配置路由
export default ({store, redirect} => { if (!store.state.username) { redirect('/') } }) vuex 代码处理请 ...
- Vue项目中使用基于Vue.js的移动组件库cube-ui
cube-ui 是滴滴公司的技术团队基于 Vue.js 实现的精致移动端组件库.很赞,基本场景是够用了,感谢开源!感谢默默奉献的你们. 刚爬完坑,就来总结啦!!希望对需要的朋友有小小的帮助. (一)创 ...
- 2018-2019-1 20165234 实现mypwd
实现mypwd(选做,加分) 1 学习pwd命令 2 研究pwd实现需要的系统调用(man -k; grep),写出伪代码 3 实现mypwd 4 测试mypwd 提交过程博客的链接