x-js学习笔记4

1、arguements的使用

当不确定有多少个参数传递的时候,可以用arguements来获取。在js中它是当前函数的一个前置对象。所有的函数都内置了一个agruments对象,其包含所有的实参。

1、arguements伪数组,并不是真正意义上的数组

(1)具有数组的length属性

(2)按照索引的方式进行存储

(3)他没有真正数组的一些方法

 <script>
        function fn() {
            for (var i = 0; i < arguments.length; i++) {
                console.log(arguments[i]);
            }
        }
        fn(1, 2, 3, 4, 5);
        function fn() {
            console.log(arguments);//arguements展示形式是伪数组
        }
        fn(1, 2, 3);
</script>

1.3

函数是可以相互调用的

2、函数的两种声明方式

2.1利用函数关键字自定义(命名函数)

2.2函数表达式(匿名函数)

var fun=function(){
console.log('')

}

fun();

fun是变量名,函数表达式声明方式跟声明变量差不多

 <script>
        var fun = function (arg) {
            console.log('');
            console.log(arg);
        }
        fun('pink老师');
    </script>

3、作用域

3.1名字(变量)不总是有效可用的,限定这个名字的代码范围就是这个名字的作用域,其提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字的可行性。

3.2js作用域(es6)之前,全局作用域,局部作用域

全局作用域:整个script标签,或者是一整个单独的js文件

局部作用域(函数作用域)在函数内部就是局部作用域

不在同一作用域互不影响,在同一作用域就近原则

3.3变量

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

在函数内部没有声明直接赋值的变量也属于全局变量

局部变量:在局部作用下(函数内部)的变量 ,形参也属于

全局变量,只有浏览器关闭的时候才能销毁,比较占用资源,局部变量,当我们程序执行完毕之后就会销毁,比较节省资源

3.4js没有块级作用域if{}等

es6之后才有

之前

//外面是不能调用num的
<script>
    if(3<5){
    var num=10;
}
    console.log('num');
</script>

4、作用域链:内部函数访问外部函数的变量,采取的是链式查找的方式来决定那个值,这种方式被称为作用域链(就近原则)。

5、js 预解析

js代码是由浏览器中javascript解释器来执行的,其在运行代码的时候会分成两步:预解析和代码执行。

(1)

js引擎会把js里面的所有var(用来定义变量的)和function(用来定义函数的)放到当前作用域的最前面

(2)代码执行 按照代码书写顺序从上到下

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

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

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

7、js对象

一个数据库、一个网页、一个与远程服务器的链接都是“对象”。

js中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象,例如字符串、数值、数组、函数等。

对象是由属性和方法组成的

7.1、创造对象的三种方式(object)

(1)利用字面量创建对象

 <script>
        var object = {
            name: 'keke',
            type: '阿拉加斯加犬',
            year: 5,
            color: '棕红色',
            jineng: 'bark,showfilm'


        }
        console.log(object.name);
        console.log(object['year']);
            console.log(object['year']);
    </script>

(2)利用new Object创建对象

<script>
        var obj = new Object();
        obj.name = '11';
        obj.sex = 'nan';
        obj.year = '19';
        obj.skill = function () {
            console.log('影分身术');
        }
        console.log(obj.name);
        console.log(obj.sex);
        obj.skill();
    </script>

(3)利用构造函数创建对象

 

 <script>
        function Wangzhe(name, style, xueliang) {
            this.name = name;
            this.style = style;
            this.xueliang = xueliang;
            this.Attack = function (attack) {
                console.log(attack);
            }
        }
        var lianpo = new Wangzhe('廉颇', 'strong', 500);
        var houyi = new Wangzhe('后羿', 'sheshou', 100);
        console.log(lianpo.name);
        console.log(lianpo.style);
        console.log(lianpo['xueliang']);
        lianpo.Attack('近战');
        houyi.Attack('远程');

    </script>

 8、内置对象

JavaScript中对象分为3种:自定义对象、内置对象、浏览器对象

前两种对象是JS基础内容,属于ECMAScript;

内置对象就是指Js语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或者是基本的技能,内置对象·最大的优点就是帮助我们快速开发

js提供多个内置对象:Math、Date、Array、String等

9、MDN

10、Math

//Math数学对象 不是一个构造函数,所以我们不需要new来调用,直接使用里面的方法就可以
        console.log(Math.PI);//一个属性 圆周率
        console.log(Math.max(1, 99, 3));//最大值
        console.log(Math.max(1, 99, 'pink'));
        console.log(Math.max());
<script>
        var myMath = {
            PI: 3.141592653,
            max: function () {
                var max = arguments[0];
                for (var i = 1; i < arguments.length; i++) {
                    if (arguments[i] > max) {
                        max = arguments[i];
                    }
                }
                return max;
            },
            min: function () {
                var min = arguments[0];
                for (var i = 1; i < arguments.length; i++) {
                    if (arguments[i] < min) {
                        min = arguments[i];
                    }
                }
                return min;
            }
        }
        console.log(myMath.PI);
        console.log(myMath.max(1, 4, 8));
        console.log(myMath.min(1, 5, 8));
</script>

<script>
        //1、绝对值方法
        console.log(Math.abs(1));//1
        console.log(Math.abs(-1));//1
        console.log(Math.abs('-1'));//隐式转换 会把字符型的-1转为数字型的-1
        console.log(Math.abs('pink'));//NaN
        //2、三个取整方法
        //(1)Math.floor()向下取整 往最小了取
        console.log(Math.floor(1.1));
        console.log(Math.floor(1.9));
        //(2)Math.ceil()向上取整 往大了取
        console.log(Math.ceil(1.1));
        console.log(Math.ceil(1.9));
        //(3)Math.round()四舍五入 其他数字都是四舍五入,但是.5特殊往大了取
        console.log(Math.round(1.1));
        console.log(Math.round(1.6));
        console.log(Math.round(-1.1));//-1
        console.log(Math.round(-1.5));//-1



    </script>

10.2随机数方法 random()

<script>
        //1.Math对象随机数方法 random()返回随机的小数0<=x<=1
        //2.这个方法里面不跟参数
        //3、代码验证
        console.log(Math.random());
        //4、我们想要得到两个数之间的随机整数 并且包含这两个整数
        //Math.floor(Math.random()*(max-min+1)+min);
        function getRandom(min, max) {
            return Math.floor(Math.random() * (max - min + 1) + min);
        }
        console.log(getRandom(1, 10));
        //5.随机点名
        function getRandom(min, max) {
            return Math.floor(Math.random() * (max - min + 1) + min);
        }


        var arr = ['张三', '李四', '王五', '赵六'];
          console.log(arr[getRandom(0, arr.length - 1)]);     
  				console.log(arr[getRandom(1, 4)]);


    </script>

11、Date日期对象

Date()日期对象 是一个构造函数 必须使用new 来调用创建我们的日期对象

Date对象和Math对象不一样,他是一个构造函数,所以我们需要实例化后才能使用

Date实例用来处理日期和时间

注意:

1、获取当前的时间必须实例化

2、Date()构造函数的参数

<script>
        //1.使用Date 如果没有参数 返回当前系统的当前时间
        var date = new Date();
        console.log(date);
        //2.参数常用的写法 数字型 2019,10,01 字符串型 2019-10-01 8:08:08
        var date1 = new Date(2019, 10, 1);
        console.log(date1);
        var date2 = new Date('2019-10-1 8:8:8');
        console.log(date2);
    </script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值