前端学习(三十)es6的一些问题(笔记)

赋值表达式
    document.onclick = document.onmouseover = fn;
    var a = b = c = d = 5;             不推荐

逗号表达式
    var a = 5,
        b = 3,
        c = 2;

听逗号最后一个
    if(0,1){                     if(1,0)
        true     √                    true
    }else{                        else
        false                         false     √
    }

alert('a','b');             'a'
    alert(('a','b'));             'b'

num = 12,5;                 12
        逗号的优先级很低

numu = (12,5);                 5

预解析
    会把所有声明提到顶部

预解析不会突破script标签
    预解析不会突破作用域
    函数也有预解析
    变量赋值形式的函数,按照变量的预解析走

script执行步骤:
        读取一个script标签->预解析->执行->读取下一个script标签
==============================================================
this的问题
    方法属于谁this就是谁
    function show(){
        alert(this);             window
    }
    show();
    show属于window的

document.onclick = function(){
        alert(this);             document
    };
    function属于document的

document.onclick = function(){
        function show(){
            alert(this);
        }
        show();
    };

show谁也不属于,应该弹undefined。但是弹window。
=============================================================
属于js的bug

作者造成的。
    作者也知道有这些bug。

严格模式
    'use strict';
    必须放在第一行,上面什么都不能有

解决了哪些问题?
        1.this的问题
        2.不允许不加var声明变量
        3.不允许连等声明变量
        4.干掉with

是好东西。
    不兼容IE低版本。

自己写得js文件都要加严格模式
==========================================================
    作者?
        布兰登·艾克
    作者为什么弄出这个bug?
===========================================================
ajax交互
    ajax不能跨域

跨域:
        www.a.com
        www.b.com

为什么需要跨域?
        1.第三方验证
        2.多个项目
======================================================
    jsonp         json with padding
        跨域交互

必须有jsonp的接口

百度下拉的接口
    https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=a&cb=show

wd         word             关键词
        cb         callback         回调函数的名字

$.ajax({
        url:'',
        data:{
            wd:''
        },
        dataType:'jsonp',
        jsonp:'回调参数名'
    });

玩jsonp:
    1.先有接口
    2.测试接口
        直接写在地址栏
    3.
        $.ajax({
            url:'百度的接口地址',
            dataType:'jsonp',
            data:{
                wd:'关键词'
            },
            jsonp:'cb'
        }).then((res)=>{
            成功
            res.s
        },(err)=>{
            失败
        });

搜索
    https://www.baidu.com/s?wd=关键词
    window.open('url','_self');

Jsonp核心原理
    利用script跨域加载脚本,执行回调函数
Ajax核心原理
    使用XMLHttpRequest对象

1.ajax如何跨域?
    jsonp
2.jsonp为什么不是ajax?
    因为没用XMLHttpRequest

360搜索
    https://sug.so.360.cn/suggest?callback=show&word=a

google
https://www.google.com.hk/complete/search?client=hp&hl=zh-CN&gs_rn=64&gs_ri=hp&cp=1&gs_id=uc&q=a&xhr=t

bing
http://cn.bing.com/AS/Suggestions?pt=page.home&mkt=zh-cn&qry=a&cp=1&cvid=A2306BB1EE354A81BB7DDBDF96BB8395

sogou
https://www.sogou.com/suggnew/ajajjson?key=aa&type=web
    window.sogou.sug(["aa",["aaa","aape","aabc的四字词语大全","a爱奇艺会员","aabb","aabc","aa655","阿安卡盟","aaa云","aabc形式的词语"],["0;0;0;0","1;0;0;0","2;0;0;0","3;0;0;0","4;0;0;0","5;0;0;0","6;0;0;0","7;0;0;0","8;0;0;0","9;0;0;0"],["","","","","","","","","",""],["0"],"","suglabId_1"],-1);

数据网站
    https://bird.ioliu.cn/
==================================================
移动端
    轮播图插件
    swiper
    官网:http://www.swiper.com.cn/
    只需要布局就行

滚屏插件
    iscroll
    官网:http://cubiq.org/iscroll-5

===================================================
swiper     无缝轮播图

===================================================
题:
    function show(b){
        alert(a);
        var a = b;
        alert(a);
    }
    var a = function (num){
        return show(num);
    }
    alert(a(12));

undefined 12 unefined

上一篇:前端学习(三十六)promise(笔记)


下一篇:前端学习(二十二)css3(笔记)