js学习总结-适合小白

384 阅读3分钟

这是我参与8月更文挑战的第30天,活动详情查看:8月更文挑战

js的位置不同可能导致不同的后果。

前言

今天整理了一下之前学习js的笔记,在这里分享个大家。

window.onload=function(){} 意思是当页面加载完成 才去执行function中的代码。

js语句是发送给浏览器的命令。

注意:

  • js中严格区分大小写。

  • 语句结束记得写分号。

  • 变量的类型是弱类型,既不限制变量中的值的类型。

    js代码中出现的错误可以在网页中的console中查看。

    特殊的Number:  无穷(Infinity);不是一个数(NaN Not a number(一般发生在类型转化失败的情况下))

    isfinity():用来判断数是不是无穷的,如果返回的是true,那么这个数是有限的,如果返回false,那么这个数是无穷的。

    类型转换:  toString();

    parseInt();从左到右依次验证字符串中的每个字符,如果是一个有效数字,则继续查看下一个,直到验证到不是一个合法字符的时候结束,返回的是非法字符之前的数字。如果第一个字符都不是一个合法数字,那么返回的是NaN。

    parseFloat();原理同上。(第一个小数点为合法字符!)

    强制转换类型:  String();什么东西都可强制转换为字符串。

    Number();首先看整个字符串是不是符合数字的规则,如果不符合,直接返回NaN。如果符合,返回的是数字。

    Boolean();需要记住转换后是false的。

    (面试)js的六种假值:

  • 0

  • ""

  • false

  • NaN

  • null

  • undefined

    prompt();  从键盘输入一个内容。

    document.write();  把东西打印在页面上,括号里边可以包含标签。

    作用域问题 :面试的时候会考。

    json: 在网络中,传输的json通常是字符串格式。

    json的序列化:把json对象->json字符串。(JSON.stringify(json));从后台拿到的数据要从json字符串转化为json对象。(JSON.parse(json))。

    bootcdn :可以下载各个版本的jQuery和其他(vue)。

    跨域问题:

     https://www.baidu.com:8080
    
    
            1. 协议
                http
                https
    
            2. 域名不同
                2.1 顶级域名 baidu.com
                    
                    发起请求的页面是
                    aaa.com
                    接受的页面是
                    bbb.com
                
                2.2 二级域名的不同
                    www.baidu.com
                    fanyi.baidu.com
    
            3. 端口不同
    

    解决跨域问题可以通过后台,也可以通过前端解决。(后台解决只需要一行代码)

    前端解决跨域:

    
            JSONP 是一种json的使用模式
    
            JSONP和ajax关系
                前台要解决跨域  不使用ajax
                使用ajax会产生跨域
            因为ajax使用的是      XHRXMLHttpRequest)请求,其他请求不存在跨域安全问题
    

    ajax和jsonp的区别:

    
            ajax 和 jsonp 的区别
    
            1. ajax有跨域问题
                jsonp没有跨域问题
    
            2. 原理
    
                ajax原理:
                    利用了xhr对象
                jsonp
                    利用了src没有跨域的特性,通过函数的方式解决的
    
            3. 请求回来的数据
    
                1. ajax请求回来的数据
                    一般情况下,ajax请求回来的都是json格式的
                2. jsonp请求回来的数据
                    是一个函数的调用
    
            4. 请求方式的不同
                1. ajax的请求方式
                    GET POST PUT DELETE...
    
                2. jsonp的请求方式
                    只能用GET
    

    闭包:

    1. 函数里面嵌套的子函数
    2. 子函数调用父函数的局部变量
    3. 通过return将子函数暴露在全局变量,该子函数既是闭包

    闭包的好处:

  • 避免全局变量被污染

  • 局部变量驻留在内存中,可以在外部被调用

    //闭包案例
    var a=5;
    function fun1(){
        var a=4;
        return function(){
            a++;
            console.log(a);
        }
    }
    var fun2= fun1();
    fun2();
    

    innerHTML:  innerHTML原生属性,等价于jquery中的$().html().

    **注意:**如果一个对象存在,当访问它不存在的属性和方法时,不会报错,而是返回undefined。

    each循环:

    //例子来自电梯导航
    
    //将多个类名为floor的标签赋值给floorList
    var floorList = $(".floor");
    var heightArr = [];
    //通过each()将floorList中的每个对象加入多数组中
    floorList.each(function(i){
        heightArr.push(floorList.eq(i).offset().top)
    })
    

    多个相同(如p)标签存在的时候,可以在css中使用这中格式。

    P:nth-child(i){
        各种属性
    }
    

    navigator.userAgent:  用户代理头的字符串表示(判断浏览器类型的时候会用)

    seo优化:当页面被搜索到的时候,排行更靠前。