比较运算符:“>
”,”<
”,”==
”,“>=
”,“<=
”,”!=
”
- 比较结果为 boolean 值,但凡是运算符,都是要有运算的。用到布尔值,true 或 false
字符串的比较,比的是 ASCII 码。
< >
例var a = "a">"b";
document.write(a);
//答案是 false
例var a = 1 > 2;
document.write(a);
//答案是 false
例var a = 1 < 2;
document.write(a);
//答案是 true
例var a = "1">"8";
document.write(a);
//答案是 false
例var a = "10">"8";
document.write(a);
//答案 false,不是十和八比,是字符串一
零和八比,先用开头的一和八比,比不过就不看第二位了;一样的就拿零和八比
例var a = 123;
document.write(a);
//答案 false
运算结果为真实的值
==:等不等于
例var a = 1 == 2;
//答案是说 1 等不等于 2,因为 1 肯定不等于 2,所以值为 false
例var a = NaN == NaN;
//答案是 false,NaN 不等于任何东西,包括他自己
例var a = undefined == underfined;
//答案是 true
例var a = infinity == infinity;
//答案是 true
例var a = NaN == NaN;
//答案是 false。非数 NaN 是不等于自己的
NaN 得不出数,又是数字类型,就是 NaN
>= <= !=:是否不等于,非等
比较结果为 boolean 值:true 和 false
逻辑运算符::“&&
”,“||
”,“!
“
- “&&”与运算符
两个表达式:先看第一个表达式转换成布尔值的结果是否为真,如果结果为真,那么它会看第二个表达式转换为布尔值的结果,然后如果只有两个表达式的话,只看看第二个表达式,就以返回该表达式的值了,如果第一位布尔值为 false,不看后面的,返回第一个表达式的值就可以了。运算符就是要求结果。
例 var a = 1 && 2;
//答案 2,如果第一位 1 为真,结果就为第二位的值 2
例 var a = 1 && 2 + 2;
//答案 4,如果 1 为真,结果就为 4
例 var a = 0 && 2 + 2; //答案 0
例 var a = 1 && 1 && 8; //答案 8,先看第一个是否为真,为真再看第二个,中途如果遇到 false,那就返回 false 的值
例 var a =1 + 1 && 1 – 1;document.write(a); //答案 0
如果是三个或多个表达式,会先看第一个表达式是否为真,如果为真,就看第二个表达式。如果第二个也为真,就看第三个表达式(如果为真就往后看,一旦遇到假就返回到假的值),如果第三个是最后一个表达式,那就直接返回第三个的结果。如果第一个是假,就返回第一个值,当是真的时候就往后走,一旦遇到假,就返回。
例:2>1 && document.write("hello");
//意思是如果 2 大于 1,那么就打印:hello,如果前面真才能执行后面的(相当于短路语句使用)。&&与运算符是有中断作用的,当短路语句使用(如果。。那么。。) 例 var data = …; //执行一个语句,会用到 data,data&&执行一个语句全用到 data
例 data && function(data);
- “||”或运算符
例var num = 1 || 3;
//答案 1
例var num = 0 || 3;
//答案 3
例var num = 0 || false;
//答案是 false
看第一个表达式是否为真,如果为真,则返回第一个值,碰到真就返回。如果第一个表达式是假,就看第二个表达式,如果第二个是最后一个,就返回第二个的值。
关注真假的说法:全假才为假,有一个真就为真
例 var num = 0 || false || 1;
document.write(num);
//答案 1
例 div .onclick = function(e){
非 IE 浏览器直接取 e 值
var event = e;
IE 浏览器存在 window.event;
}
写成下面这样就解决了兼容性。在所有的浏览器中都好使
div .onclick = function(e){var event = e || window.event;}
- “!“非运算符,否的意思。
先转成布尔值,再取反
例 var a = ! 123;document.write(a); //答案 false。123 的布尔值是 true,取反是 false
例 var a = ! “”;document.write(a); //答案 true。空串””布尔值是 false,取反是 true
例 var a = ! !“”;document.write(a); //答案 false,取反后,再反过来,结果不变
例 var a = true;a =!a;document.write(a) //答案 false,自身取反,再赋值给自身
注意:被认定为 false 的值:转换为布尔值会被认定为 false 的值 undefined,null,NaN,“”(空串), 0, false
条件语句:if
、if(){}else if(){}
、 if <—> && 转换
- if(条件判断){
当条件成立时,执行里面的执行语句
}当 if 的条件成立时,才能执行{}内的语句。
当条件转化为布尔值,如果为 true 就执行;如果为 false 就不执行。
例if(1 < 2){document.write(“hello”);}
例if ( 1 > 0 && 8 > 9){}
&&放在 if 中的,全真才为真,&&是并且的意思
例 if ( 1 > 0 || 8 > 9){}
||
放在 if 中是或者的意思,有一个是真就可以了 - IF 和&&的互相转化
if (1 > 2) {document.write.('a');}
上面与右边效果完全一样1 > 2 && document.write('a');
&&和 II 比较常用在条件判断中。
循环语句
- for 循环(for 循环不固定,非常灵活)
格式 for (var i = 0; i < 10; i++) {}
for 是关键字,()括号里面三个语句用两个分号隔开,{}里面是循环体 - while, do while
while 循环
while 循环是 for 循环的简化版 for( ; ; ){},while 循环底层机制是 for 循环。
for ( ; 只在这一部分写,前后不写 ; ){} - do while 循环
do while 是不管满不满足条件都会先执行一次,再判断成不成立,如果成立才会执行
第二次,不成立就停止 ,一般没人用。
爱上练习题
- 计算2的n次幂,n可输入,n为自然数。
- 计算n的阶乘,n可输入。
- 著名的斐波那契额数列:1 1 2 3 5 8输出第n项。
- 输入a,b,c三个数字,打印出最大的。
- 打印出100以内的质数。
解答:
- 第一道题:
<html>
<body>
<script>
//计算2的n次幂,n可以输入,n为自然数
var n = parseInt(window.prompt('input'));//从浏览器输入数
var res = 1;
for(var i=1; i<=n ; i++){
res *= 2;
}
document.write(res);
</script>
</body>
</html
- 第二道题:
<html>
<body>
<script>
//计算n的阶乘,n可以输入
var n = parseInt(window.prompt('input'));
if(n<=0){
document.write("error!")
}
var sum = 1;
for(var i=n ; i>=1 ; i--){
sum *= i;
}
document.write(sum);
</script>
</body>
</html>
- 第三道题目:
<html>
<body>
<script type="text/javascript">
//著名的斐波那契额数列
//1 1 2 3 5 8输出第n项
var n = parseInt(window.prompt('input'));//用来接收输出的n行
//定义第一个数
var first = 1;
//定义第二个数
var second = 1;
//定义第三个数
var third;
if(n>2){
for(var i=0 ; i<n-2 ; i++){//循环n-2次
third = first + second;
first = second;
second = third;
}
document.write(third);
}else{
document.write(1);
}
</script>
</body>
</html>
- 第五道题目:
<html>
<body>
<script>
//输入a,b,c三个数字,打印最大的
var a = parseInt(window.prompt('input'));
var b = parseInt(window.prompt('input'));
var c = parseInt(window.prompt('input'));
var max = a;
if(b>max && b>c){
max = b;
}else if(c>max && c>b){
max = c;
}
document.write(max);
</script>
</body>
</html>
- 第六道题目:
<html>
<body>
<script>
//打印100以内的质数
//循环100以内的数字
var count = 0;//用来计算有几个被整除的
var res;//表示质数
for(var i=2 ; i<=100 ; i++){
//什么是质数?就是只能被1和本身整除的数字
//从i里面取到一个数,然后循环i这个数从1到本身,看看是不是只有两个数能被整除
for(var j=1 ; j<=i ; j++){
if(i%j==0){
res = i;
count++;
}
}
if(count==2){//表示该数是质数
document.write(res+" ");
}
count = 0;
}
</script>
</body>
</html>