程序员书籍笔记 程序员书籍笔记
  • HTML
  • CSS
  • JavaScript
  • 前端知识
  • Vue
  • MarkDown
  • git
  • Node.js
  • Linux
  • 51单片机
  • 四级
  • 第一学期课程
  • 操作系统
  • 计算机网络
  • 数据结构
  • 计算机组成原理
  • HTML5
  • Electron
  • 日记便签
  • 前端导航
GitHub (opens new window)
  • HTML
  • CSS
  • JavaScript
  • 前端知识
  • Vue
  • MarkDown
  • git
  • Node.js
  • Linux
  • 51单片机
  • 四级
  • 第一学期课程
  • 操作系统
  • 计算机网络
  • 数据结构
  • 计算机组成原理
  • HTML5
  • Electron
  • 日记便签
  • 前端导航
GitHub (opens new window)
  • HTML

  • CSS

  • JavaScript

    • es6

      • es6基础
      • es5的扩展
      • let和const命令
    • 基础
    • 运算符和数组
    • 函数
      • 函数
        • 函数的参数
        • 返回值
        • arguments
        • 函数声明
      • 作用域
        • 全局作用域
        • 局部作用域
        • 块作用域
        • 作用域链
      • 预解析
        • 案例分析1
        • 案例分析2
        • 案例分析3
    • 对象和类型
    • 数据类型
    • js接口
    • DOM案例
    • 节点操作
    • BOM接口
    • 页面操作
    • 动画和轮播图
    • 本地存储
    • js面向对象
    • es6
    • ES6
    • js面向对象1
    • js面向对象2
    • js面向对象3
  • GO

  • 正则表达式

  • java

  • TypeScript

  • react

  • 前端知识

  • jQuery

  • Python

  • C和C++

  • 前端和后端
  • JavaScript
yuadh
2021-09-15
目录

函数

# 函数

函数:就是封装了一段可被重复调用执行的代码块。通过此代码块可以实现大量代码的重复使用

//声明函数
function getSum(num1,num2){
	var sum=0;
	for(var i=num1;i<num2;i++){
		sum+=i;
	}
	console.log(sum);
}
//调用函数
getSum(1,100);
1
2
3
4
5
6
7
8
9
10

# 函数的参数

在声明函数时,可以在函数名词后面的小括号中添加一些参数,这些参数被称为形参,而在调用该函数时,同样也需要传递相应的参数,这些参数被称为实参

参数的作用:在函数内部某些值不能固定,我们可以通过参数在调用函数时传递不同的值进去

形参和实参不匹配问题

参数个数 说明
参数等于形参个数 输出正确结果
参数多余形参个数 只取形参的个数
参数小于形参个数 多的形参定义为undefined

# 返回值

return

一个函数只能有一个return

没有返回值 返回的是 undefined

# arguments

每个函数内置的伪数组

function fn(){
	for(var i=0;i<arguments.length;i++){
		console.log(arguments[i]);
	}
}
fn(1,2,3);
1
2
3
4
5
6

参数伪数组

  • 具有数组length属性
  • 按照索引的方式进行存储
  • 没有真正数组的一些方法 pop() 、push()

# 函数声明

  1. 关键字自定义函数

    function fn(){
    	...
    }
    
    1
    2
    3
  2. 函数表达式(匿名函数)

    var fun = function(){...};
    
    1

    例

    var fun = function(arr){
    	console.log(arr);
    }
    fun('yuadh');
    
    1
    2
    3
    4

    注意

    • fun是变量名 , 不是函数名
    • 函数表达式也可以进行传递参数

# 作用域

全局作用域

局部作用域

# 全局作用域

在整个script标签内的

在全局作用域下的变量 是全局变量

# 局部作用域

在函数内部

在局部作用域下的变量 是局部变量

注意

  • 在局部作用域下不使用 var 声明的变量也是全局变量
  • 全局变量只有在浏览器关闭时才会销毁,比较占内存

# 块作用域

没有块作用域

es6 有作用域

# 作用域链

内部函数访问函数的变量,采取的是链式查找的方式来决定取那个值

(内部向外部取值)

# 预解析

我们 js 引擎运行 js 分为两步:1.预解析 2.代码执行

笔记

1、预解析 js 引擎会把 js 里面所有的 var 还有 function提升到当前作用域的最前面

2、代码执行 按照代码书写的顺序从上往下执行

预解析分为 变量预解析(变量提升) 和 函数预解析 (函数提升)

笔记

1、变量提升 就是把所有的变量声明提升到当前作用域的最前面 不提升赋值操作

2、函数提升 就是把所有的函数声明提升到当前作用域的最前面 不调用函数

console.log(num);
var num=10;
=========相当于
var num;
console.log(num);
num=10;
=========结果是
undefined
1
2
3
4
5
6
7
8
fun();
var fun = function (){
	console.log(22);
}
========相当于
var fun;
fun();
fun = function(){
	console.log(22);
}
========结果是
报错
1
2
3
4
5
6
7
8
9
10
11
12

# 案例分析1

var num=10;
fun();
function fun(){
	console.log(num);
	var num=20;
}
==================
var num;
function fun(){
    var num;
    console.log(num);
    num=20;
}
num=10;
fun();
==================结果是
undefined
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# 案例分析2

var num = 10;
function fn(){
	console.log(num);
	var num=20;
	console.log(num);
}
fn();
========================
var num;
function fn(){
    var num;
    console.log(num);
    num=20;
    console.log(num);
}
fn();
===================结果是
undefined;
20
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 案例分析3

f1();
console.log(c);
console.log(b);
console.log(a);
function f1(){
	var a = b = c = 9;
	console.log(a);
	console.log(b);
	console.log(c);
}
=================
function f1(){
    var a;
    a = b = c = 9;
    console.log(a);
	console.log(b);
	console.log(c);
}
f1();
console.log(c);
console.log(b);
console.log(a);
=================结果是
9
9
9
9
9
报错
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
编辑 (opens new window)
上次更新: 2023/02/07, 14:51:48
运算符和数组
对象和类型

← 运算符和数组 对象和类型→

Theme by Vdoing | Copyright © 2021-2023 yuadh
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×