javascript入门 (一)

javascript入门(一)

<!--
	前提:IDEA 需要设置ES6语法
	'use strict'; 严格检查模式,预防javascript的随意性导致的一些问题
	必须写再Javascript的第一行
	局部变量建议都使用Let去定义
	-->


<script>
    'use strict';
    let i = 1;
</script>

iterator

遍历数组

//通过for of 实现   for in 下标
<script>
    'use strict';
    var arr = [3,4,5];
    for (var x of arr){
        console.log(x)
    }
</script>

遍历Map

<script>
    var map = new Map([["tom",100],["jerry",200],["hasagei",300]])
    for(var x of map){
        console.log(x);
    }
</script>

遍历Set

<script>
    var set = new Set([5,6,7]);
    for(let x of set){
        console.log(x);
    }
</script>ja

函数的定义和参数获取

定义函数

方式一:

绝对值函数

<script>
    function abs(x){
        if (x>=0){
            return x;
        }else{
            return -x;
        }
    }
</script>

一旦执行到return代表函数结束,返回结果!

如果没有执行return,函数执行完也会返回结果,结果就是undefind

方式二:

<script>
    var abs = function (x){
        if (x>=0){
            return x;
        }else{
            return -x;
        }
    }
</script>

function (x){...}这是一个匿名函数,但是可以把结果赋值给abs,通过abs可以调用

参数问题:javascript可以传任意个参数,也可以不传递参数

可以手动抛出异常来查看参数问题

<script>
    var abs = function (x){
        //手动抛出异常
        if(typeof x!=='number'){
            throw 'Not A Num'
        }
        if (x>=0){
            return x;
        }else{
            return -x;
        }
    }
</script>

arguments是一个免费赠送的JS关键字

变量的作用域

在javascript中,var定义变量实际是有作用域

如果在函数体内声明,则在函数体外不可使用

<script>

    function js(){
        var x = 1;
        const x = x + 1;
    }
    x = x + 2; //Uncaught SyntaxError: Identifier 'x' has

</script>

如果两个函数使用了相同的变量名,只要其在自己的函数内部,则彼此之间不冲突

<script>

    function js(){
        var x = 1;
        const x = x + 1;
    }
    
    function jsk(){
        var x = 1;
        const x = x + 1;
    }
</script>

内部函数可以访问外部函数的成员

<script>

    function js(){
        var x = 1;

        function jsq(){
            var y = x + 1;

        }
        var z = y + 1;
    }


</script>

假设,内部函数变量和外部函数的变量重名

假设在javascript中函数查找变量从自身函数开始,函数变量的查找从内到外查找

<script>

    function js(){
        var x = 1;

        function jsq(){
            var x = 'A';
            console.log('inner'+x);

        }
        console.log('outer'+x);
        jsq()
    }

js()
</script>

提升变量的作用域

<script>

    function js(){
        var x = "x" + y;
        console.log(x);
        var y = "y";
    }

    function jsq(){
        var y;
        var x = "x" + y;
        console.log(x);
         y = "y";
    }

    js()
</script>

结果:xundefined

结论:JS执行引擎,自动声明了y的声明,但是不会提升y的赋值

综上所述:写JS代码,声明变量全放在函数头部

全局变量

<script>

    var x = 1;
    function f(){
        console.log(x);
    }
    console.log(x);

</script>

默认所有的全局变量,都会自动绑定在windows对象下

JS实际上只有一个全局作用域(window),任何变量(函数也可以视为变量),假设没有在函数的作用范围内找到,就会向外查找,如果在全局作用域都没有找到,会报错:RefrenceError

规范

由于我们所有的全局变量都会绑定到我们的window上,如果不同的JS文件,使用了相同的全局变量,

<script>

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

    //定义全局变量
    globalPath.name = "quanju";
    globalPath.add = function(a,b){
        return a + b;
    };

</script>

把自己的代码全部放入自己定义的唯一空间名字中,降低全局命名冲突的问题.

局部作用域 let关键字

let 关键字,解决局部作用域冲突问题,建议使用

常量 const关键字

方法

定义方法

方法就是把函数放在对象里面,对象只有两个东西,属性和方法。

方法调用要加括号

<script>
    var zs = {
        name : 'zs',
        birth : 2000,
        age : function () {
            // 今年 - 出生年
            var now = new Date().getFullYear();
            return now - this.birth;
        }
    }
    //属性
    zs.name;
    //方法
    zs.age();
</script>

this 始终指向调用他的人

apply

在JS中可以控制this指向object

<script>

    function getAge() {
        // 今年 - 出生年
        var now = new Date().getFullYear();
        return now - this.birth;
    };
    var zs = {
        name : 'zs',
        birth : 2000,
        age : getAge
        };


    getAge.apply(zs,[]);//this指向了zs对象,参数为空


</script>

Date日期对象

<script>

    var now = new Date();
    now.getTime();//获取时间戳1609549447451
    now.getDate();//日

    console.log(new Date(1609549447451));//把时间戳转为东八区时间
</script>

JSON对象

对象都用{}

数组都用[]

所有的键值对都用 key:value

在JS当中一切都为对象,都可以转化为JSON,JSON也可以转换为对象

AJAX

  1. 原生的JS写法,xhr异步请求(基本上不用)
  2. Jquery封装好的方法
  3. axios请求

本次复习笔记资料来自B站UP主:狂神说

posted @ 2021-01-02 09:20  Godwin_Zhang  阅读(135)  评论(0编辑  收藏  举报