JavaScript基础学习Day-6

作用域

ES5两个作用域:全局和局部,只有函数能产生作用域

ES6三个作用域:全局、局部、块级,一定要配合ES6语法(let声明变量)

    <script>

        /*

            let 与 var 的区别

            let(ES6) 与 var(ES5) 的区别

            在全局声明了一个变量(在同一作用域链中)

            1. 如果再次赋值都会覆盖

            2. 如果再次声明并赋值时;

                var声明的变量会被覆盖,原来的会消失

                let则是不同的代码块中不同的值

                    如果是相同的代码块则报错

         */

 

        /*         let a = 10;

                let a = 20;

                // Uncaught SyntaxError: Identifier 'a' has already been declared

                console.log(a); */

 

        /*         // let a = 15;

                var a = 15;

                if (a > 10) {

                    a = 20;

                }

                console.log(a); // a =20 */

 

        /*         var a = 15;

                if (a > 10) {

                    var a = 20;

                }

                console.log(a); // a =20 */

 

        /*         let a = 15;

                if (a > 10) {

                    let a = 20;

                    console.log(a); // a = 20

                }

                console.log(a); // a = 15  */

 

        /*         // let name = '张三';

                var name = '张三';

                function foo() {

                    var name = '法外狂徒';

                    console.log(name);

                }

                foo();             // 法外狂徒

                console.log(name); */               // 张三

 

    </script>

作用域链

作用域链:任何局部空间都可以访问全局作用域,JS中函数内部可以定义函数,作用域多了之后就会产生作用域链条

变量在作用域链上的访问规则:

  1. 就近原则:访问变量时,会优先访问的是在自己作用域链上声明的变量,如果自己作用域上没有声明这个变量,那么就往上一级去找有没有声明这个变量,如果有就访问
  2. 如果没有就继续往上找有没有声明,直到找到0级作用域链上,如果有,就访问,如果没有就报错

变量提升(预解析)

变量提升:针对变量和函数,声明部分会自动提升到代码的最前面;

变量:var变量,分为声明部分var abc和定义部分 abc = '123';

函数:声明就是定义

变量传值方式

function Person (name, age, salary) {

              this.name = name;

              this.age = age;

              this.salary = salary;

}

function fl (person) {

             person.name = 'ls';

             person = new Person ('aa', 18, 10);            // 对p进行了重新赋值

}

var p = new Person('zs', 18, 1000);

console.log(p.name);                // zs

fl(p);                                          // aa, 18, 10

console.log(p.name);               // aa

JSON语法规则

JSON是存储和交换文本信息的语法

在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML、JSON等

JSON作为一个轻量级的数据格式比XML效率要高,XML需要很多的标签

1、JSON可以有两种格式

一种是对象格式的

let jsonStr = `{"name" : "JSON" , "address" : "北京市西城区" , "age" : 25}`      // JSON的对象格式的字符串

另一种是数组对象

let jsonStr = `[{"name" : "JSON" , "address" : "北京市西城区" , "age" : 25} ]`   // 数组对象格式

JSON.stringify(obj)          将JSON对象转换为字符串

let jsonStr = JSON.stringify(jsonObj);

JSON.parse(string)         将字符串转为JSON对象格式

let jsonObj =JSON.parse(jsonStr) ;

 

数组去重

let arr = [20, 66, 88, 25, 66, 90, 88, 50];

// 先排序

arr.sort(function (a , b){

            return a - b;           // 数组升序排列

});

// 定义一个新数组

let newArr = [];

// 遍历数组

for (let i in arr){

      if (arr[i] != arr[i+1]){

         newArr.push(arr[i]);

}

}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值