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循环,外循环控制行,内循环控制列。