IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 学习博客:【JavaScript】函数及方法 -> 正文阅读

[JavaScript知识库]学习博客:【JavaScript】函数及方法

函数

1.定义函数

        //方式1
        function abs(x){
            if(x>=0){
                return x;
            }else{
                return -x;
            }
        }

        //方式2
        var abs = function (x){
            if(x>=0){
                return x;
            }else{
                return -x;
            }
        }

执行到return代表函数结束,否则返回NaN

function(x){…}是匿名函数,结果可以赋给abs,通过abs就可以调用函数

2.调用函数

在这里插入图片描述

可以传任意参数,也可以不传参数

3.抛出异常

var abs = function (x){
    //手动抛出异常
    if(typeof x!== 'number'){
        throw 'Not a Number';
    }

    if(x>=0){
        return x;
    }else{
        return -x;
    }
}

4.关键字arguments

传入的所有参数,是一个数组

for(var i = 0; i<arguments.length; i++){
    console.log(arguments[i]);
}

5.关键字rest(ES6引入)

获取已定义参数之外的所有参数

function xyz(a,b,...rest){
    console.log("a=>" + a);
    console.log("b=>" + b);
    console.log(rest);

}

rest参数只能写在最后,…rest

变量的作用域

在js中,var定义变量有作用域

在函数体中声明,在函数体外不可以使用(若想实现则需要闭包)

function yl(){
    var x = 1;
    x = x + 1;
}

x = x + 2;   //Uncaught ReferenceError: x is not defined

若两个函数使用了相同的变量名,只要在函数内部,就不冲突

function yl(){
    var x = 1;
    x = x + 1;
}

function yl1(){
    var x = "q";
    x = x + 1;
}

内部函数可以访问外部函数的成员,反之不能

    function yl(){
        var x = 1;

        function yl1(){
            var x = "q";
            console.log("内:" + x);
        }
        console.log("外:" + x);
        yl1()
    }
yl()

函数查找变量从自身函数开始,由内向外查找,若外部存此同名函数变量,则内部函数会屏蔽外部函数变量

function yy(){
    var x = 'x' + y;
    console.log(x);
    var y = 'y';
}
yy()

结果:xundefined

js执行引擎,自动提升了y的声明,但不会提升变量y的赋值

function yy(){
    var y;
    
    var x = 'x' + y;
    console.log(x);
    y = 'y';
}
yy()

先声明,放在函数头部,用的时候再定义,便于代码维护

1.全局变量

//全局变量
var x = 1;

function f(){
    console.log(x);
}

f();
console.log(x);

全局对象window

//全局对象
var x = "run";
alert(x);
alert(window.x);    //默认所有的全局变量,会自动绑定在window对象下

alert()这个函数本身也是一个window变量

//自定义函数可覆盖原来的函数
var old_alert = window.alert;

//自定义函数
window.alert = function(){

};
window.alert('hi');

//恢复原函数
window.alert = old_alert;
window.alert("hello");

js只有一个全局作用域,任何变量(包括函数)如果没有在函数作用范围内找到,就会向外查找,如果在全局作用域内都没有被找到,报错RefrenceError

2.规范

所有的全局变量绑定在window上,对于不同的js文件,使用相同的全局变量会发生冲突

//唯一全局变量
var yl = {};

//定义全局变量
yl.name = 'yang';
yl.add = function (a, b){
    return a+b;
}

定义一个唯一的空间,将代码全部放入以降低全局命名冲突的问题

3.局部作用域let

function aaa(){
    for (var i = 0; i < 10; i++) {
        console.log(i);
    }
    console.log(i+1);   //使用var关键字,i出了作用域还可以使用
}
aaa()

在这里插入图片描述

let关键字解决局部作用域冲突问题

function bbb(){
    for (let i = 0; i < 10; i++) {
        console.log(i);
    }
    console.log(i+1);   //使用let关键字,i出了作用域不可以使用Uncaught ReferenceError: i is not defined

}
bbb()

在这里插入图片描述


4.常量

var PI = '3.14';

console.log(PI);
PI = '100';
console.log(PI);

ES6之后,引入常量关键字const

//只读变量 不可更改
const PI = '3.14';

console.log(PI);
PI = '100'; //报错
console.log(PI);

Uncaught TypeError: Assignment to constant variable.

方法

1.定义方法

var yl = {
    name: "杨",
    birth: 2000,
    age:function (){
        var now = new Date().getFullYear();
        return now - this.birth;
    }
}
    yl.name;    //属性
    yl.age();   //方法
function getAge(){
    var now = new Date().getFullYear();
    return now - this.birth;
}

var yl = {
    name: "杨",
    birth: 2000,
    age: getAge
}
yl.age();   //22
getAge();   //NaN

this默认指向调用它的那个对象

2.apply

在js中可以控制this的指向

getAge.apply(yl, []);   //this指向yl这个对象,参数为[]
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 23:16:14  更:2022-04-01 23:20:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:26:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码