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

 后续继续补充。。。

原文地址:https://www.cnblogs.com/yewenxiang/p/5987123.html