1、函数   关键词(function)

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

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

console.log(b)   undefined

console.log(a)    is not defined

a=12;

var b=13;

因为a没有带var,所以不存在变量提升,浏览器会把它当成window的属性(window.a=12)

function也是js的关键字,用于声明和定义函数的,声明和定义都在内存模块中同时完成,因此。函数

也有变量提升这个功能

2、函数的定义:函数是具有一定功能的代码块

函数是通过function定义的,function后边是函数名(自己取)

函数的语法结构:function(){}

通过分析图可以发现,内存模块只存var的变量名,儿函数是存整个代码块

函数的四种定义方式

<1>声明式定义  function fn(){}

<2>表达式定义var an=function(){}

匿名函数

<3>自调用  定义和调用同时完成

<4>通过对象的形式  var a=new Function{}

-函数调用  函数名()

函数最大的优势,会形成一个独立的模块,可以按需使用,可以重复使用

按需使用可以提升性能,重复使用,可以减少代码冗余

-函数调用的过程

函数执行时会形成一个自己的私有空间,最大的作用域是window,然后执行里面的代码块

-作用域链

函数内部的变量被使用时,首先会在自己的私有作用域下查找是否有这个变量,有就直接使用

没有就会向他的上一级查找,父级有就使用父级,父级没有就会继续向上查找,直到window为止

,window有就使用window,没有就is not defined,这种查找机制叫做作用域链

-函数归属谁,跟他在哪儿调用没有瓜子,而是在哪儿定义

-函数递归,函数自己调用自己

function fn(){

  console.log(5)

  fn()

}

fn()

-break黑人continue运算

break:终止当前运算

continue:跳出当前运算,执行下一个

return :返回的

每个函数都有一个返回值,如果函数人为return,返回什么就是什么

如果没有人为返回,结果就是undefined,并且return后面的代码不再执行了

function fn(){

  console.log(12)

  return=45;

}

var as=fn() fn执行后将自己的返回值undefined给as

console.log(as) undefined

console.log(as) 45  fn执行后将自己的返回值45给as,且return下的代码不再执行

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

-函数外的变量叫全局变量,函数内的变量叫做私有变量,看变量归谁,就看他在哪个作用域下声明

-私有变量的种类

<1>在私有作用域下声明的

<2>通过函数传参的私有变量

-函数传参 arguments

function (a,b,c,d){}

a,b,c,d:都是参数

案例

10.19JS日记的更多相关文章

  1. 10.24JS日记

    1.函数都有返回值,人为return,返回什么就是什么,否则,他的返回值就是undefined 而方法的本质也是函数,所以也有返回值 document.getElementById()返回的是获取的标 ...

  2. 10.22JS日记

    1.js数据类型分析 (1)基础类型:string.number.boolean.null.undefined (2)引用类型:object-->json.array... 2.点运算  xxx ...

  3. 10.17JS日记

    1.变量提升 变量提升是浏览器的一个功能,在运行js代码之前,浏览器会给js一个全局作用域,叫window, window分为两个模块,一个叫做内存模块,一个叫做运行模块,内存模块找到当前作用域下的 ...

  4. 9.10 h5日记

    9.10 1.什么是属性 属性是表示某些事物的一些特征 2.属性分为标签属性和样式属性,二者的区别在于哪里 标签属性:<img src="01.jpg" width=&quo ...

  5. 10.31JS日记

    this问题 (1)this是js的一个关键字,指定一个对象,然后替代this: 函数中的this指向行为发生的主体,函数外的this都指向window,没有意义 (2)函数内的this跟函数在什么环 ...

  6. 10.23JS日记

    1.逻辑运算 ||  &&  ! ||:遇到第一个为true的值就中止并返回 &&:遇到第一个为false的值就中止并返回,如果没有false值,就返回最后一个不是fa ...

  7. 10.18JS日记

    1.JS的本质就是处理数据,数据来自后台的数据库,所以变量起到了临时存储的作用, ES制定了js的数据类型 2.数据类型有哪些? (1)字符串 String (2)数字  Number (3)布尔 B ...

  8. 10.16JS日记

    1.parseint() 2.parsefloat() 这两个单词运行的时候遇到第一个非数字就结束了 3.var a="hello word"  a这个变量为字符串,每一个字母为字 ...

  9. 10.9h5日记

    一.单位 1.px是基本的单位,像素 2.em也是一个单位,使用方式,用元素父级的字体大小乘以em前的数字,父级没有就向上一个父级找, 直到body为止,如果body没有,就用默认的字体大小16px ...

随机推荐

  1. cap文件的格式说明

    前面24个字节是.cap文件的文件头. 头信息对应的结构体为:struct pcap_file_header {  bpf_u_int32 magic;  u_short version_major; ...

  2. 删除node_modules文件夹

    老版本的npm对有node_modules文件夹太长的问题,新版本就没有这个问题.2.7? npm install rimraf -g rimraf node_modules

  3. CentOS7下搭建LNMP记录

    OS:使用虚拟机最小化安装的CentOS 7系统:配置好防火墙,SELINUX,YUM源,IP地址等. 0.因为采用了最小化安装系统,所缺少的包比较多,必要工具先安装一下 yum install gc ...

  4. Anaconda安装及配合pycharm使用

    首先到https://www.anaconda.com/download/下载合适的anaconda版本.如Windows 64bit. 下载了直接双击开始下载,一路同意下去,到选择安装的目录.这里选 ...

  5. Windows 10 显示中的仅更改文本大小和加粗选项

    问题描述: 在Windows 10 1703 之前的版本,在控制面板-显示中,存在如下图中的图形界面设置: 系统升级到Windows 10 1703 或是Windows 10 1709 之后,不再存在 ...

  6. PL/SQL Job

    1. 鼠标右键点击 jobs 弹出 Create Job 对话框,如下图: 2. 在对话框中输入相应的值,如下图: 其中: What                   ——作业执行时将要调用的存储过 ...

  7. Centos7 安装 erlang rabbitmq

    1.安装Erlang依赖采用官网的rpm包的形式进行安装,不采用yum(由系统进行自动安装 可能因为版本低的问题而出现一系列问题) erlang依赖 rpm包下载地址https://github.co ...

  8. 单元测试框架unittest

    单元测试:单元测试,是指对软件中的最小可测试单元进行检查和验证,对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义如:c语言中单元指一个函数,java里单元指一个类,图形化的软件中可以 ...

  9. js 中的正则表达式RegExp

    1.RegExp对象 1.1 RegExp对象实例的创建 正则表达式模式:     g:表示全局模式,即模式将被用于整个字符串,而非发现第一个匹配项时立即停止:     i:表示不区分大小写,忽略大小 ...

  10. openjdk1.8 源码地址

    http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/656ab3b39178/src/