函数

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. ctime、atime、mtime时间

    区分一个文件或者目录的更改时间(change time,ctime),访问时间(access time,atime)以及修改时间(modify time,mtime)很重要. ctime——在Unix ...

  2. SpringCloud01 服务提供者和消费者

    说明:服务消费者直接利用RestTemplate调用服务提供者,这种使用方式只是适用于微服务数量比较少的项目,如果微服务的数量比较多建议使用SpringCloud提供的Eureaka组件. 注意:实现 ...

  3. SpringMVC RESTful中文乱码

    开发中常遇到各种中文乱码很少心烦,这里总结了各种中文乱码https://www.cnblogs.com/lwx521/p/9856186.html 下面以SpringMVC遇到的中文乱码为例详解 首先 ...

  4. 18.phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613)

    phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613) phpMyAdmin是一套开源的.基于Web的MySQL数据库管理工具.其index.php中存在一处文件包含逻辑, ...

  5. MySQL server has gone away问题得解决方案

    mysql出现ERROR : (2006, 'MySQL server has gone away') 的问题意思就是指client和MySQL server之间的链接断开了. 造成这样的原因一般是s ...

  6. nkv客户端性能调优

    此文已由作者张洪箫授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 问题描述 随着考拉业务的增长和规模的扩大,很多的应用都开始重度依赖缓存服务,也就是杭研的nkv.但是在使用过 ...

  7. 牛客网小白月赛6H(最小生成树【克鲁斯卡尔】)

    #include<bits/stdc++.h>using namespace std;long long sum=0;struct node{    int a,b,len;}road[5 ...

  8. 2018牛客多校第九场E(动态规划,思维,取模)

    #include<bits/stdc++.h>using namespace std;const long long mod=1000000007,inv=570000004;long l ...

  9. [Django笔记] uwsgi + nginx 配置

    django 和 nginx 通过 uwsgi 来处理请求,类似于 nginx + php-fpm + php 安装nginx 略 安装配置uwsgi pip install uwsgi 回想php- ...

  10. UML——前两章

    前言 软件开发过程中,在生命周期中,我们大都知道要写文档,但是针对这种团队集体完成的事情,如果中间出现了人员流动问题,这时侯有文档仅仅是不够的.为了让大多数开发人员和用户能直观的了解软件开发的进度和流 ...