• Javascript 知识遗漏点梳理。


    先说一下我之前学习Javascript的学习经历,然后就是最近几天学到以前没有注意的知识遗漏点。

    1.之前的学习经历和方法:

    最开始是看了Javascript DOM编程与艺术这本书,把慕课网上的《JS基础篇》,《JS进阶篇》,包括W3CJS教程都刷了一遍,然后才看的Javascript高级程序设计 这本堪称入门红宝石的书,看到第五章《function类型》时发现进展非常缓慢,觉得前面还是太浮躁,一些基本的知识点没有理解透彻。

    然后看到 《更快学习 JS 的 6 个简单思维技巧》这篇文章:

    原文: https://www.sitepoint.com/mind-tricks-to-learn-javascript-faster/  汉版 http://web.jobbole.com/88365/

    文章中提到的几点我觉得说的很有道理,前面学习以为自己懂了,没有去彻底去研究去练习导致学到后面很难进行下去。文章中说的很有道理:

    在学习 JavaScript 的过程中,快速理解某个概念可能是最不利于你进步的一件事。请允许我解释一下。

    当你理解一些东西并且觉得它言之有理的时候,你会倾向于立即学习下面的内容。可能你会理解下面的内容并继续向下学习。但是很快,你会发现你已经忘记了之前所学到的一些东西,因此你需要重新复习。你很快的瞥一眼之前的概念更新下记忆然后继续往后学习。但是,这次你又忘记了其他的一些东西。你会不停的反反复复直到你发现你完全的迷失了方向。你会感到气馁,休息一下后,你准备重新开始,却发现已经忘记了所有的东西。

    幸运的是只需要简单的两步就可以解决这个问题:

    1. 限制一次学习的内容总量

    2. 认真的练习——写代码

    这段话我是深感认同,这大概是大部分像我一样的新手学习的一个误区所在。然后就是调整心态决定重新对照着视频认真过一遍。

    2.三天来学到的知识遗漏点:

    顺带提一下这过程中也学会了使用XMind来在学习中记录笔记,感觉非常棒。

    1.Javascript屏蔽代码的方法:

    <script type="text/javascript">
        <!-- //不支持时"<!-- JS代码 //-->"被当做HTML注释掉了。
            JS代码;
        //-->  //支持JS时"//-->"被认为是被注释了.
    </script>
    <noscript></noscript><!-- 如果浏览器不支持JS,可以使用这个标签来告诉用户您的浏览器不支持Javascript -->

    2.Javascript数值转换:

    • 隐式转换:转换成{undefined 、 null 、数值型(0.0或0或NaN)、字符串长度为0}-->false
    • 强制转换:1.布尔值强制转换
      //强制转换成布尔值假的情况。其他情况为真
      var test=Boolean(0);
      var text=Boolean(-0);
      text=Boolean(NaN);
      text=Boolean(undefined);
      text=Boolean("");
      text=Boolean(0.0);
      text=Boolean("0");
                    2.其他类型转换成字符串类型用String()方法。

                          3.其他类型转换成数值型三种方法 parseInt() Number() parseFloat()。需要注意的是Number函数将字符串转换为数值比parseInt严格多,只要有一个字符无法转换成数值就会被转换成NaN。

    parseInt(val1,val2)接受两个参数 val1为要转换为数值的值,val2为要转换的方式(二进制,八进制。。)根据传进来的val1来判断以什么进制转换。 test=parseInt(3ye);//转换为3. 如果字符串的第一个字符不能被转换成数字,parseInt()会返回NaN

    3.遗漏知识点:

    //取余8%3 8除以3的余数为2。如果3%8 3里面能减去0个八,那就不减了,还剩下3,所以余数是3.
    document.write(3%-8);//3,因为8前面的-号不起作用。
    document.write(-3%8);//-3
    document.write(-3%-8);//-3
    var i=3;
    var j=8;
    document.write(""+i+j+"3ye");//383ye
    document.write(i+j+"3ye");//113ye
    //Js代码的执行顺序是从左到右,所以在+连接的表达式中,遇到字符串型数据之前,所有出现的数值型数据(或者可以自动转换为数值型的数据)依然被作为数值来处理,为了避免这种情况我们可以在表达式前拼接一个空字符串。
    //void运算符用来指明一个表达式无返回结果。
    //eg:
    var z = (a=1,b=2,c=3);//z=3;
    var z= void(a=1,b=2,c=3)//z=undefined
    • 字符串不支持自增自减运算符。
    • !=和!==没有区别。
    • null和undefined的区别:

      null表示一个值被定义了,定义为“空值”。
      underfined表示根本不存在定义。
      所以设置一个值为Null是合理的,如:objA.valueA=null;
      但设置一个值为undefined是不合理的。

    • 函数没有return时返回值为undefined,函数碰到return立即结束,不再执行下面的代码。

    function text(){
        alert("this is test function") 
    }
    alert(text());//第一弹 this is test function 第二次弹 undefined
    
    function text(){
        alert("this is test function")
        return "xiangwang";
    }
    alert(text());//第一弹 this is test function 第二次弹 "xiangwang"
    • 函数不传参设置默认值的方法。
    function text(num1,num2){
        num1=num1||1;//相当于if(!!num1===false)num1=1;
        num2=num2||2; //相当于if(!!num2===false)num2=2;
        return num1+num2;
    }
    //!!表示强制转换为布尔值。
    //不建议num1=num1||1;//相当于if(!!num1===false)num1=1; 这种方法设置函数默认参数。
    //理由:--当num有值为0时也会变成1
            // --当num有值为NaN时(很可能前面的计算有误),也会变成1.
            //--另外当传入的值类型错误时,本来或许你的程序会报错,但是经过这个语句或许不会报错。    
    //建议使用的方法
    if (num == null) num = 1
    //当传入num为0时 默认值1不起作用
    //而当使用num=num||1 当传入num为0时 默认值为1

     后续继续补充。。。

  • 相关阅读:
    封装组件集合
    Vue组件封装(以封装一个button组件为例)
    Spark权威指南读书笔记(四) 聚合与连接
    leetcode刷题笔记一百三十五题 分发糖果
    leetcode刷题笔记一百三十四题 加油站
    leetcode刷题笔记一百三十三题 克隆图
    leetcode刷题笔记一百三十一与一百三十二题 分割回文串与分割回文串II
    leetcode刷题笔记一百三十题 被围绕的区域
    leetcode刷题笔记一百二十九题 求根到叶子节点数字之和
    leetcode刷题笔记一百二十八题 最长连续序列
  • 原文地址:https://www.cnblogs.com/yewenxiang/p/5987123.html
Copyright © 2020-2023  润新知