js基础学习(函数)

函数

1.函数定义

java中

public 返回值类型 方法名(){
		reture 返回值;
}

js中

function 方法名(){
			return 返回值;
}

或者

var abs = function(x){
			return 返回值;
}
//定义函数,定义绝对值函数
        function abs(x){
            if(x>=0){
                return x;
            }else{
                return -x;
            }

在这里插入图片描述

2.函数调用

abs(10)//调用x为10

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

手动抛出异常
typeof x! ==‘number’

        function abs(x){
        if(typeof x!=='number'){
            throw 'not a number';
        }
            if(x>=0){
                return x;
            }else{
                return -x;
            }

在这里插入图片描述

  • 参数存在多个

因为js不限定参数的问题,所以有以下两个特性

argument     //关键字,代表传递进来的所有参数是一个数组、
					//通过该关键字可以拿到所有的参数

rest   //es6新特性,获取除了已经定义的参数之外的所有参数

用arguement获取除去这两个参数意外的参数

//多个参数
        function fun(a,b){
            console.log("a=>"+a);
            console.log("b=>"+b);
        }
        //存在两个参数,用arguement获取除去这两个参数以外的参数
        if (arguments.length>2){
            for(var i = 2;i<arguments.length;i++){
							console.log(argument[i]);
            }
        }

在参数后增加伪函数…rest,取除了已经定义的参数之外的所有参数,rest参数必须写在最后面

	//多个参数,在参数后增加伪函数...rest
        function fun(a,b,...rest){
            console.log("a=>"+a);
            console.log("b=>"+b);
            console.log(rest);
        }
      

在这里插入图片描述

3.变量的作用域

var定义的变量是有作用域的。
在函数体中的声明在函数体外不可以使用。
若两个函数使用了相同的变量名,只要在函数内部就不冲突

		function fun(){
            var x= 1;
            var m= 1;
        }
        function fun2(){
            var x= 1;//相同的变量名不冲突
        }

内部类可以访问外部类的所有成员,外部类不能访问内部类的成员如下

        	function fun(){
            var x= 1;
            //内部类可以访问外部类的所有成员
            function fun2(){
            var y=x+ 1;//2
            }
            //外部类不能访问内部类的成员
            var z=y+1;//error
        }

js中函数变量查找,有自身变量开始向外查找,假设外部存在这个同名的变量,则内部函数屏蔽外部函数的变量用自己的。

js自动提升了y的声明,不提升y的赋值,如下代码

		function fun(){
            var x= "x"+y;  //	   等价于var y;
            console.log(x);//	   var x= "x"+y;
            var y = "y";  //	console.log(x);
        }

输出结果xundefine

  • 故而,写js时将所有的变量定义都放在函数的头部,便于代码维护。
    例如
        var x=1,
            y=x+11,
            z,i,a;

全局变量,默认所有的全局变量都绑定在window对象下,js只有一个全局作用域,包含任何全局变量(函数也可以视为变量)。

	var x = 'ooo';
	alert(x);
	alert(window.x);//与上边代码是同样的效果 
	window.alert(x);//alert()本身也是window的一个变量,与上边的效果相同

由于都绑定在一个作用域下,为了减少不同js文件下的冲突,将全局变量绑定在自己定义的对象下,例如

      //唯一全局变量
        var mms = {};
        //定义全局变量
        mms.name = 'dd';
        mms.add = function(a,b){
            return a+b;
        }

将自己的定义的全局变量全部放在自己定义的唯一空间内,降低全局命名冲突的问题 >>jQuery

局部作用域 let

解决局部作用域冲突的问题,建议用let定于局部作用域的变量

常量 const

es6之前只要全部由大写字母命名的变量就是常量,建议不要修改这样的值。
es6引入了常量关键字‘const’,无法更改了

//常量
        const PI = '3.14';
        console.log(PI);
        PI = '5';
        console.log(PI);

在这里插入图片描述

4.方法的定义和调用

类与方法的区别

  • 类是具有相同的属性和方法的集合。
  • .对象是类中具体一个实例。

是一种抽象的,并不实际存在的,表示一种事物共有特征的描述。

对象是一种具体的,实际存在的,类中的某一个个体

方法(method): 当将函数和对象合写在一起时,函数就变成了 “方法”(method)// 当函数赋值给对象的属性,我们称为"方法"
调用方法需要带括号(yum.age() )

对象包含两个东西:属性和方法

//方法
        var yum = {
            name:'mn',
            birth:2020,
            age:function(){
                var now = new Date().getFullYear();
                return now-this.birth;
            }
        }

this指向调用者yum

this
this永远指向其所在函数的真实调用者;如果没有调用者,就指向全局对象window

apply

在js中可以控制this指向

5.内部对象

①创建Date对象new Date()

        var now = new Date();
        console.log(now);

https://www.runoob.com/jsref/jsref-obj-date.html

Date对象的方法常见:

    now.getFullYear();
    now.getDate();
    now.getMonth();
    //get一个时间戳
    now.getTime();

时间戳世界统一 1970 1.1 0:00:00世界统一

console.log(new Date(时间戳));

获得当前时间(时间戳转为时间)

JSON

JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

JSON 是 JS 对象的字符串表示法。

在js中一切皆为对象,任何js支持的类型都可以用json来表示
格式:

  • 对象都用{}
  • 数组都用[]
  • 所有的键值对都用key:value

json数据交换格式显示的网页响应

JSON.parse()用于将一个 JSON 字符串转换为 JavaScript 对象。
JSON.stringify()用于将 JavaScript 值转换为 JSON 字符串。
var obj = JSON.parse('{"a": "Hello", "b": "World"}');
	 //结果是 {a: 'Hello', b: 'World'}  一个对象
var json = JSON.stringify({a: 'Hello', b: 'World'});
	  //结果是 '{"a": "Hello", "b": "World"}'  一个JSON格式的字符串
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值