javascript基础学习
Posted solaris-wwf
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript基础学习相关的知识,希望对你有一定的参考价值。
js规范
- 缩进一个tab = 4个空格
- + * 左右都要有一个空格
- 每一条语句后面都要跟一个;分号
查看js错误
1.firefox firebug
2.google google控制台
字符串类型和其他类型相加,自动转换成字符串类型,所做的就是字符串拼接
1.与NaN(not a number)进行算数运算,结果依旧是NaN,包括NaN和NaN进行运算也是nun自己 var num=1-"2a"; 结果"2a"转换成数字NaN,NaN减去NaN也是NaN,
2.纯数字的字符串将转换成数字与数字进行相加 var num= 1+ "1"; 结果是转换成了数字2,
3.任何其他数据类型除了和字符串,和数字进行运算,会自动转换成数字再进行运算,
true = 1; false = 0; null = 0; undefined = NaN; var num = 1 + true;//结果数字2.
强制数据转换
var tmp = boolean(-1); 结果为true,0为false
var tmp = boolean(""); 结果为false,有字符串为true,null和undefined为false,
Numer(): Number(true); 为1,false为0,"20a"结果为NaN,null为0,undefined为NaN,
ParseInt(),取整,类型为Number,兼容Number功能, ParseInt("20a"); 结果为20,
ParseFloat();浮点数,类型为Number,
var num = 1 / 0; 结果为infinty,无穷大, var num = -1 / 0; 结果为-infinty,无穷小
1,一元运算符
只能操作一个值得运算符,a++,++a,a--,--a
2,关系运算符
如果都是数值,比较大小,如果都是字符串,则比较ASCII字符编码值 alert("abc">"abd"); 从第一个一个一个比较,c<d的编码值,则返回false。
两个操作数如果有一个是数值,则将另一个转换成数值进行比较, alert(2 > true); true为1,
一个操作数NaN, alert(1 == NaN); 返回false,!=返回true,NaN自身不相等, alert(NaN != NaN); ,则返回true.
全等===,全不等!==, alert(20 === "20"); 返回false,数据类型不同,
alert(20 == "20"); 返回true,转换成数值后相比较
3,逻辑运算符
1.与&&,左右都为真,才为真,如果第一个判定为假,则不进行第二个表达式判断,返回假(短路操作),
2.或||,左右有一个真,返回真,左右都为假,才返回假(断路操作),如果第一个表达式为真,则不进行第二个表达式的判断,返回真,
3.非!,将任何值先进行布尔运算,取反, alert(!infinity); 返回false, alert(!NaN); 返回true,
位运算:
应用层开发(面向对象语言),object+c->c语言->汇编->二进制(机器码)
多个逻辑运算符的时候,先运算&&后运算||, year % 400 == 0 || year % 4 == 0 && year % 100 != 0;
二进制转换
1:十进制转换成二进制,除2取余,余数倒序排列得到结果,
2:二进制转换成十进制,110100 1*2^2+1*2^4+1*2^5=52,从右向左依次0开始,遇到1则算2的几次方相加,
3:十进制转八进制/十六进制,先将十进制转换成二进制,再将二进制转换成八进制/十六进制。
二进制转八进制,从右向左,每三个分为一组,不足三位的用0补足,每组转换成十进制,110 011->63
八进制转十进制,63,3*8^0+6*8^1=51,
二进制转十六进制,从右向左,每四个分为一组,不足四位的用0补足,每组转换成十进制,0011 0011->33
十六进制转十进制,33,3*16^0+3*16^1=51,
三目运算符/条件运算符
表达式:表达式1 ?表达式2 :表达式3;
如果表达式1为非0(真),则求解表达式2,如果表达式1为0(假),则求解表达式3,
var num1 = 20; var num2 = 10; alert(num1 > num2 ? num1 : num2 );//判断num1是否大于num2,如果条件成立,这返回第一个num1,如果条件不成立,则返回num2
break与continue再循环语句中的应用,break跳出循环,continue则跳过下面的运算继续下一次循环。
函数:
当他被调用时可执行的重复使用的代码块
var show = function(); 因为右边没有函数名称,一般称为匿名函数
function 函数名()函数体;,aguments内置的数组 function sum()alert(aguments[0]); sum(3,4,5); 输出3,
函数如果没有返回值,则不能赋值,需要return一个值。return一般放在最后,执行到return后结束,后面的语句不执行
var num = parseInt("20a") ;//num等于20; alert(typeof num);//返回num的数据类型number;
判断闰年
function leapyear(a) if(a % 4 == 0 && a % 100 != 0 || a % 400 == 0 )//条件不能被100整除,并且能被4整除,异或可以被400整除 return true; elsereturn false; alert(leapyear(2000));
判断是否是素数
function prime(num) var isyes = true; for(i = 2; i <num; i++) if(num % i == 0)//如果被小于任何自己的数且这个数大于等于2的数整除 return num +"不是素数"+!isyes;//返回不是素数 break; return num +"是素数"+isyes; alert(prime(8));
递归函数
函数可以自己调用自己,称为递归,特点:必须有参数,必须要return,
工作当中不会使用递归函数,短时间内会导致内存剧增
function sum(n) if(n == 1) return 1; return sum(n - 1) + n; alert(sum(50));
斐波拉契函数
一开始有一对兔子,到四月的时候,兔子会出生一对新的兔子
1mon 2mon 3mon 4mon
1 0 0 0
0 1 0 0
0 0 1 0
1 0 0 1
1 1 0 1
4月的总数 = 上个月的三月份兔子 + 这个月新出生的兔子,这个循环同样试用与99月100月
rabbit(4)sum = rabbit(3) + rabbit(1)
function rabbit(month) if(month < 4) return 1; return rabbit(month -3) + rabbit(month - 1);//增加的兔子加上上个月的总数兔子递归,就是这个月的总数兔子, rabbit(10);
以上是关于javascript基础学习的主要内容,如果未能解决你的问题,请参考以下文章