美文网首页
无事爱翻书——你不知道的JavaScript 中卷

无事爱翻书——你不知道的JavaScript 中卷

作者: 水煮香蕉 | 来源:发表于2019-08-11 21:18 被阅读0次

    无事爱翻书——你不知道的JavaScript 中卷

    短评

    翻完了中卷,整体评价三星。不是很感兴趣。读这本书的时候缺乏兴趣,看的很局促,很多内容没有仔细阅读。

    很多内容,我更倾向于在其他地方阅读,比如 MDN和口水掘金。


    你不知道的JavaScript 中卷

    结构

    本书分为四部分 : 类型types 语法grammar 异步async 和性能performance

    类型和语法

    typeof

    所有 typeof 返回 object的对象,比如数组,都包含一个内部属性 [[Class],这可以视为内部的一个分类,一般通过这种方式获得

    Object.prototype.toString.call(new Date())
    //"[object Date]"
    Object.prototype.toString.call([1])
    //"[object Array]"
    

    document.all

    falsy(虚值)是在 Boolean 上下文中已认定可转换为‘假‘的值.

    document.all是一个对象,但在在类型转换时候会视为 false,这个是为了对历史代码的兼容性,很多代码用这个判断是否是 ie

    if(document.all){
    // ie
    alert('ie')
    }
    

    || && 返回值

    和直觉可能不一样,|| && 返回的值不一定是布尔值,而是两个操作数其中一个的值。但并不影响你直觉上的判断结果。

    var a =0;
    var b ='abc'
    var c=null
    
    a||b;
    b||c
    a&&b
    

    Cphp里会返回true或者false,但在js python ruby里返回的某个操作数的值。

    判断会对左边进行条件判断,如果不是布尔值会强制类型转换,然后计算

    返回的是什么值?

    • 如果是 || 运算,左边是true就返回左边,如果是false就返回右边

    • 如果是 &&操作,如果是true就返回右边,false返回左边

    所以

    function a(a,b){
        a = a || 'defalut'
        b = b || 'd2'
        return a+','+b
    }
    

    这里会对两边进行 ||判断,结果是真返回左边,结果否返回右边

    小细节

    else if并不存在

    else if 不是规定的语法,是自己发明的语法

    if(){
    
    }else {
        if(){}
    }
    //这里简写成了 else if
    

    异步

    异步这里,收获不是很大,说的不感兴趣。

    但后续可以整理 promise/A+ 规范

    对生成器不感兴趣,哈欠连连,看豆瓣评论很多人也表示需要细细品读,变相承认写的缺乏吸引力

    性能

    Web Worker

    有些处理密集的任务需要执行,希望以多线程的方式执行。

    应用场景:

    • 密集的数学计算
    • 大数据集排序
    • 数据处理,压缩,音频分析 图像处理等
    • 高流量网络通信

    SIMD

    单指令多数据,杜宇数据密集型的应用,性能收益明显。不是很详细。

    其他的都忽略了

    性能调试

    写的非常局促,没有展开说。

    循环运行多次操作求平均值的做法不正确,推荐使用 benchmark.js来获取性能结果,也有一个网站可以搜集不同设备上的性能数据 jspref.com

    性能优化应该关注大局,关键路径应该付出努力优化,费关键路径可以忽略。

    结论

    怀疑是我菜,还达不到刨根究底的地步,收获不大。

    相关文章

      网友评论

          本文标题:无事爱翻书——你不知道的JavaScript 中卷

          本文链接:https://www.haomeiwen.com/subject/outejctx.html