函数

Var 是js的关键字,用于声明变量,声明在内存模块完成,定义(=)是在执行模块完成。

Var可以在内存模块提前(js代码执行前)完成所以有变量提升这个功能。

因为a没有带var,所以不存在变量提升,浏览器会把他当成window的属性。

Function也是js的关键字,用于声明和定义函数的,声明和定义都在内存模块完成了。

Function 也是内存模块提前完成,所以有函数提升这个功能。

变量提升和函数提升 都叫预解释。都是浏览器的。

1.函数的定义

函数是通过function定义的,function 后跟的是函数名。

结构语法

function fn(){}

通过上图我们可以发现,内存模块只存var的变量名。而存function整个代码块,因为声明和定义同时完成的

2.函数结构注意事项

1)函数名fn可有可无 有名的叫有名函数 无名的叫匿名
2)一定要带小括号() 里面放参数

3)函数定义 与 函数调用
定义 通过function 定义 function fn (){}

3.函数定义的四种方式

1)声明式定义 function fn() {}
2)表达式定义 var fn=function() {} 匿名函数

3)自调用 定义和调用同时完成

(function(){})(   )
~function(){}()        ~
+function(){}()         +
-function(){}()          -
!function(){}()          !

4)通过 对象的形式 var as=naw Function(){}

4.函数调用

函数最大的优势 会形成一个独立的模块 可以按需使用 可以重复使用
1)按需使用 可以提升性能 重复使用 可以减少冗余
2)函数调用的过程
函数执行时会形成一个自己的私有作用域 最大的作用域是window

然后执行函数里面的代码块

5.作用域链

作用域链:函数内部的变量被调用时 首先会在自己的私有作用域下查找是否有这个变量
有就直接用 没有就会向他的上一级查找 父级就是用父级的 父级没有就会以此继续向上查找
直到window为止 widnow有就使用 没有就is not defined 这种查找机制我们叫作用域链

分析图

6.函数递归:函数内部调用自身

分析图

7.break和continue

break和continue
break 终止当前程序
continue 跳出当前的程序 执行下一个
break和continue只能用在循环语句中
如果条件语句想使用break只能使用return

1)return  返回的

每个函数都有一个返回值 如果函数人为return了 返回什么就是什么
如果没有人为返回 结果就是undefined 并且return后面的代码不在执行了

案例分析

分析图:

函数内部的return不影响内部的预解释

函数内外的变量

函数外的变量 叫全局变量 函数内的变量叫私有变量
看变量归谁 看他在哪个作用域下声明
私有变量的种类
1.在私有作用域下声明的
2.通过函数传参的叫私有变量

8.函数传参     arguments参数

1)Function fn(a,b,c,d){}  将a b c d 叫参数

分析图

2)形参实参

形参   定义上的参数

实参   执行上的参数

也可以直接赋值

从零开始的全栈工程师——js篇2.6的更多相关文章

  1. 从零开始的全栈工程师——js篇2.5

    数据类型与全局属性 js的本质就是处理数据 数据来自于后台的数据库所以变量就起到一个临时存储数据的这作用ECMAscirpt 制定了js的数据类型 一.数据类型 1.基本数据类型 基本数据类型就是简单 ...

  2. 从零开始的全栈工程师——js篇2.1(js开篇)

    JS开篇 一.js介绍 全称 javascript 但不是java 他是一门前台语言 而java是后台语言js作者 布兰登·艾奇 前台语言:运行在客户端的后台语言:跟数据库有关的 能干什么?    页 ...

  3. 从零开始的全栈工程师——js篇(闭包)

    闭包是js中的一大特色,也是一大难点.简单来说,所谓闭包就是说,一个函数能够访问其函数外部作用域中的变量. 闭包的三大特点为: 1.函数嵌套函数 2.内部函数可以访问外部函数的变量 3.参数和变量不会 ...

  4. 从零开始的全栈工程师——js篇(js的异步)

    js中的异步 Javascript语言的执行环境是"单线程"(single thread,就是指一次只能完成一件任务.如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任 ...

  5. 从零开始的全栈工程师——js篇2.21(事件对象 arguments 阻止事件默认行为兼容 事件委托 事件源对象)

    一.事件对象 1.常用的事件2.每个元素身上的事件都是天生存在的 不需要我们去定义 只需要我们给这个事件绑定一个方法 当事件触发的时候就会执行这个方法 3.事件绑定的写法 ①div.onclick=f ...

  6. 从零开始的全栈工程师——js篇2.20(事件对象 冒泡与捕获)

    一.复习 面向对象 1)单例模式 2)工厂模式 3)构造函数 ①类js天生自带的类 基类object function array number math boolean date regexp st ...

  7. 从零开始的全栈工程师——js篇2.16

    js操作css样式 div.style.width=“200px” 在div标签内我们添加了一个style属性 并设定了width值 这种写法会给标签带来了大量的style属性 跟实际项目是不符的 我 ...

  8. 从零开始的全栈工程师——js篇2.14(表单与计时器)

    一.表单 Form input select textarea type=”radio/checkbox/password/button/text/submit/reset/” 表单的事件 oncha ...

  9. 从零开始的全栈工程师——js篇2.12(面向对象)

    面向对象 Js一开始就是写网页特效,面向过程的,作者发现这样写不好,代码重复利用率太高,计算机内存消耗太大,网页性能很差. 所以作者就收到java和c的影响,往面向对象靠齐.Js天生有一个Object ...

  10. 从零开始的全栈工程师——js篇2.10(对象与构造函数)

    对象与构造函数 一.js数据类型 基本数据类型:string   undefined   null  boolean  number 引用数据类型  Object  array  function 二 ...

随机推荐

  1. Nodejs调试技术

    基于Chrome浏览器的调试器 既然我们可以通过V8的调试插件来调试,那是否也可以借用Chrome浏览器的JavaScript调试器来调试呢?node-inspector模块提供了这样一种可能.我们需 ...

  2. win7 eclipse连接hadoop2.x开发环境搭建

    环境: hadoop-2.3.0-cdh5.1.0 centos 6.5 x64 win7 eclipse4.3 0. 前提条件 ,jdk,maven要安装好. 1.下载hadoop,用winRAR解 ...

  3. 6.5 Ubuntu中安装搜狗输入法

    传统的方式:http://www.cnblogs.com/zlslch/p/6943318.html 最简单的方式:

  4. CSS定位机制总结

    1,CSS 有三种基本的定位机制:普通流.浮动和绝对定位.除非专门指定,否则所有框都在普通流中定位.2,普通流定位:块级框从上到下一个接一个地排列,框之间的垂直距离是由框的垂直外边距计算出来.行内框在 ...

  5. C#面向对象三大特性之二:继承

    面向对象的三大特性之一的封装,解决了将对同一对象所能操作的所有信息放在一起,实现统一对外调用,实现了同一对象的复用,降低了耦合. 但在实际应用中,有好多对象具有相同或者相似的属性,比如有一个对象 果树 ...

  6. 51nod 1354【DP】

    (我一定是A了一题假DP) 给定序列a[0],a[1],a[2],...,a[n-1] 和一个整数K时, 有多少子序列所有元素乘起来恰好等于K. K<=1e8; 思路: 感觉 k 的 约数是突破 ...

  7. java解析xml文件练习——通过应用包名获取应用图标即其他信息(基于魅族应用商店)

    1.解析包名数据文件(txt文件),并生成包名数组: package jsouphtml; import java.io.BufferedReader; import java.io.File; im ...

  8. Java基础--常用API--集合类相关API

    一.泛型 1.泛型的本质是将类型参数化,即将数据类型作为参数. 2.泛型可以在编译期进行检查,其所有的强制转换是隐式且自动的,提高了代码的安全性. 3.泛型可以用在类(泛型类).接口(泛型接口).方法 ...

  9. Java Web之分页的实现(通用)

    一.用到的工具类的封装 为了实现代码的重用性,我们将经常用到的代码封装到工具类中,以便在任何地方都可以调用 1.获取路径工具 在jsp页面中,我们经常会向Servlet发送请求,并通过反射,实现通过传 ...

  10. bootstrap table 学习记录

    效果: html代码: <!-- 工具容器 --> <div id="toolbar" class="btn-group"> <b ...