JavaScript-函数(function)基础知识

函数是一个可以重复使用的代码块,函数可以实现代码的复用

  • 函数类型(function)---function(){}

一、 声明函数

函数声明不会执行,只有到调用时候才会执行,不调用,不执行

1、使用var

语法:var 函数名=function () {代码块}

 var fun=function(){
            console.log(1)
    }

2、使用function

语法:function 函数名(){代码块}

           只有function声明的的函数才可以在声明之前上面调用

function fun(){
        console.log(1)
    }

二、调用函数

函数调用几次就执行几次,

语法:函数名()

只有function声明的的函数才可以在声明之前上面调用

function fun(){
        console.log(1)
    }
    fun()//调用函数
     
    fun()
    function fun(){
        console.log(1)
    }  

三、函数的作用域

函数的花括号是一个单独的作用域,在内部声明的变量在外部无法使用

function fun(){
        var a=10
     // console.log(a);//正确  
    }
console.log(a);//报错

四、匿名函数

匿名函数:没有名字的函数

优点:可以保护原来的代码不被污染,方便写库

function (){
}
~(function (){
})

五、自执行函数

自己调用自己执行出来

~(function (){ 
console. log(1);
})()

六、函数的封装

将重复的代码(逻辑/功能)才分出来放到一个函数中,方便复用,其他地方使用这个功能直接调用这个函数

function fun() {
        var str=0
        for (var i = 1; i < 101; i++) {
           str+=i
        }
        console.log(str);
    }
    fun(50)

七、函数的参数

  • 实参:函数调用时写在函数小括号中的数值
  • 形参:就是函数声明时函数名小括号中的变量
function  name(a){//形参
console.log(a);
}
name(3)//实参

1、函数的传参

  • 当形参多于实参时,先是一─对应,多余的形参赋值为undefined
function name(a){
console.log(a);// 
console.log(b); //
 console.log(c);
}
name(3,2,1)
  • ·当实参多余形参时,先是一一对应,多余的实参会被舍弃
function name(a){
console.log(a);// 
console.log(b); //
 console.log(c);
}
name(3,2,1)

2、arguments

  • arguments--可以获取到所有的实参

是一个伪数组,有长度、有下标,可以通过下标获取到里面的具体的数据,也可以获取到传递的实参的数量

function name(){ 
console.log(arguments);
}
name(1,2,3,5,5,6,8,9,1,32,42,534,634,6,45,57,56,75,68,8)

8.函数的返回值

使用return:将你需要在外部使用的变量或者方法就可以使用return返回给函数本身 在外部打印函数名就可以使用。return有阻断作用

 function name(){
        var a=10
        return a
    }
    console.log(name());

字符串去重

var str = '123123'
        var a = ''
        for (var i = 0; i < str.length; i++) {
        //从第二个下标值判断
            for (var j = i+1; j < str.length; j++) {
                if(str[i]===str[j]){
                 a+=str[i]
            }
        }
        }
        console.log(a);

使用函数返回值

 function fun(str) {
            var a = ''
            for (var i = 0; i < str.length; i++) {
                for (var j = i + 1; j < str.length; j++) {
                    if (str[i] === str[j]) {
                        a += str[i]
                    }
                }
            }
            return a
        }
        var b = '123123'
        fun(b)//把b传进fun函数中

九、内置函数--九个

Funtion ()//函数
Number ()//数值
string ()//字符串
Array ()//数组
Object ()//对象
Boolean ()//布尔
Error()//错误
Date ()//时间
RegExp ()//正则

十、函数提升

使用var声明的函数会将函数名提升到当前作用域的最顶端,只声明,没有定义函数,所以调用时会出错,当只有函数时,会使整个函数都提升到作用域最顶端,可以调用

  //报错
  //使用var声明的函数会将函数名提升到当前作用域的最顶端,只声明,没有定义函数,所以调用时会出错
  name()
        var name = function () {
            console.log(1);
        }
        //可调用
        //当只有函数时,会使整个函数都提升到作用域最顶端
        fun()
        function fun() {
            console.log(1);
        }

变量提升,会以函数提升优先

function a() {console.log(1);}
var a =undefined
console.log(a); / /undefined
var a = 10
function a(){console.log(1);}
console.log(a);//10
a()//报错

十一、构造函数

构造函数会经历以下 5 个步骤:

  • 创建一个空对象,作为将要返回的对象实例。
  • 将这个空对象的原型,指向构造函数的prototype属性(prototype是一个显示属性,他身上存储的是公有的属性)。
  • 将这个空对象赋值给函数内部的this关键字。(this的指向就是创建的实例)
  • 执行构造函数内部的代码。
// 构造函数
function Person(name, age) {
    this.name = name;
    this.age = age
}
var obj=new Person('张三',18)
console.log(obj);

new的作用:

实例化一个对象

  • 开辟一个新的内存空间,{}
  • this指向这个新的对象,(this指向实例对象)
  • 给这个新的对象添加属性和方法
  • 返回这个对象
// 开头首字母大写,使用this指向属性
        // 创建
        // 有参构造
        function Person(name, age) {
            this.name = name;
            this.age = age
        }
        // 调用
        var obj=new Person('炸',543)
        var obj1=new Person('123',543)
        console.log(obj);
        console.log(obj instanceof Person);//true
  1. 不需要return来返回,
  2. 当使用工厂函数创建实例时,他的实例和他的对象返回的Boolean数据类型为true。
  3. 当他改变一个数组时,不会影响原有数组
  4. 返回新对象
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值