js相关笔记(五)

1.javascript的意义
◇最开始是用来进行表单验证的。
★现在是
◆页面特效(pc端的网页效果)
◆移动端(移动web和app)
◆异步和服务器交互
◆服务端开发(nodejs)


2.CoffeeScript,TypeScript 


3.浏览器工作原理 推荐网站:https://www.2cto.com/kf/201202/118111.html


4.<script type="text/javascript"></script>书写位置其实只有head和body这两个地方,当你书写在其它位置时,浏览器的引擎也会把它提到head或者body中来。


5.控制台输出的六种方式
◆console.log 简单消息输出
◆console.warn  警告消息输出
◆console.error  错误消息输出
◆console.info   信息提示输出
◆console.dir  消息输出
◆console.debug 调试消息输出 (存在兼容性的问题)


6.js变量名 命名规则
◆变量名可以用字母开头,特殊字符可以用(_和$)开头,不能由数字或者其它特殊字符开头
◆变量名的长度不能超过255个字符
◆变量名中间不要有空格,也不要包含除了_和$之外的其它特殊符号
◆不要使用关键字或者保留符号作为变量名
◆汉字不介意作为变量名并且变量名严格区分大小写


7.输出没有定义过的变量时会在控制台报错的,但是输出 name这个变量名时会不会报错,以为内它是window对象的一个成员变量,只不过默认是空字符串。


8.不用中间变量 来交换两个数的值 推荐文章
http://www.jb51.net/article/98720.htm


9.数据类型分为两种  
★简单数据类型
☆ 字符串 String
☆ 数字 Number
☆ 布尔 Boolean
☆ 未定义 undefined
☆ 空  null (其实是object类型 只不过是空对象 除了用来销毁对象之外没有任何作用 所以就当他是 简单的数据类型了)
★复杂数据类型
☆ Object 对象
☆ function  函数
☆ Array  数组
☆ Date 日期
☆ RegExp 正则表达式
☆ Error 错误
☆ 其它....
◆判断数据类型
◇ typeof(name)
◇ typeof name


10.字面量就是一个称谓,例如 var age=88; //数值字面量 ,18 为字面值,一个固定的值,从字面上理解其含义。


11. 古代称斤两用的不是十进制而是八进制,所以古代的半斤八两是相同的。


12.进制转换规则
★进制转换   最后的值=(每一个位值*进制的(位数-1)次方)相加之和
◆311的十进制的转换规则是  3*10的2次方+1*10的1次方+1*10的0次方
◆311的八进制的转换规则是  3*8的2次方+1*8的1次方+1*8的0次方
◆十进制逢10进1 八进制逢8进1 二进制逢2进1 其它的类型  


13.当小数与小数相加时或者小数与整数相乘时会出现 精度丢失,比如0.1+0.2=0.3000000000001之类的,所以千万必要拿计算过后的小数与整数或小数进行==的比较,因为可能会出现了精度丢失的问题,比较不了是否相等。


14.js中的数字最大值是 Number.MAX_VALUE 1.7976931348623157e+308,最小值是Number.MIN_VALUE 5e-324,无穷大是 Infinity,负无穷大是 -Infinity。


15.NaN 表示无法进行运算,所以无法与任何数进行比较,包括自己,NaN==NaN 值为false
,有一个函数叫做 isNaN(value)  可以用来判断括号中的值是否是无法用来进行运算,只要不能与数字进行运算,那么返回值就是true,但是isNaN也不是很好使,比如检测null值时居然返回值为false,但是检测undefined时返回值为true。


16.其它类型转换为字符串 xx.toString,String(xx),xx+"",null和undefined无法使用toString()方法和String()方法,只能使用+""的方式转换为字符串。


17.undefined==null  值为true  但是 undefined===null  值为false  ,因为js设计者当初其实只设计了其中某一个关键字,后来发现有些地方需要区分开来,于是又增加了另一个关键字,所以在不绝对等于的情况下他们作比较是相等,但是绝对等于时就不相等。


18.字符串转换为数值类型
◆Numer(value) 中的value必须是纯数字字符串或者纯数字再或者是可以完全转换为数字。◆parseInt(value)中的value必须开头是数字,如果是纯数字或者完全可以转换为数字,会先截取数字部分的字符串,然后进行转换,最后还会进行向下取整,就像Math.floor()一样,不会带小数(整个过程就是【正则表达式匹配以数字开头的数字部分的字符串】,【然后提取】,【最后使用Numer函数转换数字】,再使Math.floor函数向下取整)。
◆parseFloat(value)中的value也必须是数字开头,如果是纯数字或者完全可以转换为数字,纯数字部分会转换为数字,其它部分会被去掉,但是会从前往后截取,碰到不可以转换为数字的字符停止截取。(整个过程就是正则表达式匹配数字部分的字符串,然后提取,最后使用Numer函数转换数字)


19.其它类型转化为数字:
◆Boolean 类型中,true数值为1,false为0
◆null的数值为0
◆undefined 为NaN


20.任何数据类型都可以转换为Boolean类型,0、“”、null、undefined、false、NaN 转换为Boolean时都为false,其它的值转换为Boolean时都为true。


21.使用双感叹号(!!)!!value,可以对其它数值进行转换为Boolean类型的值,还可以使用Boolean(value)的方式对value值进行Boolean类型的转换,并且在if中任何数值都会被转换为Boolean类型,就算不是Boolean类型的数值也会被隐式转换为Boolean类型的数值。


22.使用||来进行取值,例如 var obj= str1 || str2;等价于 
if(str1==false){
obj=str1;
}else{
obj=str2;
}


23.&& 和 || 的运算的妙用 不只是取bool值,也能取 其它类型的值,当使用&&和||链住两个值时,表面会以Boolean类型来进行处理,但是最终的结果是 【值的本身】 而并【不一定】返回的是 【Boolean类型的值】  ★切记  先执行 && 再执行 ||
◆&& 
◇当两边的值都为false时 取 左边的值
◇当有一边值为false时 取 为false的那边的值
◇当两边的值都为true时 取 右边的值
◆||
◇当两边的值都为false时  取右边的值
◇当有一边为true时 取 为true的那边的值
◇当两边的值都为true时 取 左边的值


24.运算符的优先级
◆() 先算括号里 再算括号外    优先级最高
◆ -(负号)、 -- 、++ 先解决自身 再解决其它   一元运算符优先级第二
◆ *、/、%、 先乘除   优先级第三
◆ +、 =  后加减  优先级第四
◆>、<、>=、<=、 ==  再进行比较   优先级第五
◆&&、|| 再进行逻辑关系判断   优先级第六
◆ ?: 再是三元运算符   优先级第七
◆ +=、-=、*=、/=、%=  赋值运算  优先级第八也是最低的,因为是最后才会进行赋值。


25.   前自增和后自增的区别,加加在前先进行自增的运算  加加在后 先参与运算 之后再立即进行自增的运算。
  例如:【
       var a=1;
        var b=2;
        a++;//2
        var num1= ++a + (a++) + a + (++b) + b++;
                              //3+3+ 4+3+3  =16
        //我本以为是 18
        //后来以为是 15
        //最终结果却是 16
        //加加在前先进行自增的运算  加加在后 先参与运算 之后再立即进行自增的运算



26.需求就是你要干什么,步骤就 你要怎么做,没有需求就无法干活。
★ 需求: 你要做什么
★ 思路: 你想怎么做
★ 步骤: 你要怎么做


27. 循环 使用for 来做死循环,  for(;;){alert('1');} 这样就是死循环了,for(;true;){alert('1');}  也是死循环,括号(;;)中间的值默认就是true。


28.任何数加上undefined都是NaN,NaN表示无法进行运算。


29.计数器思想

var sum=0;
for(var i=0;i<100;i++){
    sum=sum+i;
}



30.双重for循环,外循环控制行,内循环控制列。
posted @ 2018-06-09 07:28  我叫贾文利  阅读(120)  评论(0编辑  收藏  举报