zoukankan      html  css  js  c++  java
  • 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主:狂神说

  • 相关阅读:
    08-STM32+W5500+AIR202基本控制篇-实现功能1,功能2和功能4服务器搭建完成-测试通信
    07-STM32+W5500+AIR202基本控制篇-实现功能1,功能2和功能4服务器搭建-安装MQTT软件(Linux系统)
    07-STM32+W5500+AIR202基本控制篇-实现功能1,功能2和功能4服务器搭建-安装MQTT软件(.Windows系统)
    Ceph剖析:Paxos算法实现
    Linux命令小结:crontab/netstat/iostat/sar
    Ceph剖析:数据分布之CRUSH算法与一致性Hash
    Prometheus监控+Grafana+Alertmanager告警安装使用 (图文详解)
    Go语言mgo使用情况
    gob,protobuf,json在golang中的序列化效率对比
    golang json性能分析详解
  • 原文地址:https://www.cnblogs.com/XING-ZHI-JI-DA-XUE/p/14221574.html
Copyright © 2011-2022 走看看