var a = 10;
Document.write(a++); //10
表示先执行语句,后加加(先打印a,再给a++,但此时语句已经结束,a没有打印出来)。
例题2:
var a = 10;
var b = ++a -1 + a++;
document.write(b +" "+a);
//21
例题3:
var a = 1;
var b =a ++ +1;
document.write(a);
document.write(b);
//2 2
因为式子里是a++(++在后面),所以先算整个式子,全部算完再给a++。
变形:
var a = 1;
var b = ++a +1;
document.write(a);
document.write(b);
//2 3
例题4:
var a = 1;
var b = a-- + --a;
document.write(a);
document.write(b); //-1 0
观察整个式子,因为式子里有–a,所以首先算他(++a同理),–a=0,a=0,此时前面的a–中的a也变成了0,所以b的值为0,最后算a–,所以a的值为-1.
“&&”,“||”,“!”
运算结果为真实的值
运算规则:先看第一个表达式转换成布尔值得结果,如果结果为真(4中列出了所有为假的值),那么它会看第二个表达式转换为布尔值的结果,然后如果值有两个表达式的话,只要看到第二个表达时就可以返回该表达式的值了。
例题:
var a = 1 && 2 ;
document.write(a);
结果:2
var a = 1 && 2 + 2;
document.write(a);
结果:4
var a = 0 && 2 + 2;
document.write(a);
结果:false
var a = 1 && 0 && 3;
document.write(a);
结果:false,从左向右依次判断,当值为0时返回0再转换成布尔值,则为false。
var a = 1 + 1 && 1 - 1;
document.write(a);
结果:0
运算规则:先看第一个是否为真,若为真,则不再往下看了,返回这个数的布尔值,若不为真,则继续自左向右,直到找到真的为止。
例题:var a = 1 || 2 ;
document.write(a);
结果:1
例题:var a = 0 || 3 ;
document.write(a);
结果:3
例题:var a = 0 || 0 ;
document.write(a);
结果:false
undefined,null,NaN,“”,0,false
例题: var a = “10”>“8”;
document.write(a);
结果:false
因为先比较第一个字母,1和8的ascll码。
利用语言来解决问题:
例题1:计算2的n次幂,n可输入,n为自然数。
<script type=”text/javascript”> var n = perseInt(window.prompt(‘input’)); var mul = 1; for(var i = 0; i<n ; i++){ mul *= 2; } document.write(mul); </script>
例题2:计算n的阶乘,n可输入。
<script type=”text/javascript”> var n = perseInt(window.prompt(‘input’)); var mul = 1; for(var i = 0; i<=n ; i++){ mul *= i; } document.write(mul); </script>
例题3:著名的斐波那契数列,输出第n项。
<script type=”text/javascript”>
if(n>2){
var n = perseInt(window.prompt(‘input’));
var first = 1,
second = 1,
third;
for(var i = 0; i<n-2 ; i++){
third = first+second;
first = second;
second=third;
}
document.write(third);
}
else{
Document.write(1);
}
</script>
分析:// f s t
// 1 1 2 3 5 8
// f s t
依次顺位往后移
例题4:输入a,b,c三个数字,打印出最大的。
<script type=”text/javascript”>
var a = perseInt(window.prompt(‘input’));
var b = perseInt(window.prompt(‘input’));
var c = perseInt(window.prompt(‘input’));
if(a>b) {
if(a>c) {
document.write(a);
} else {
document.write(c);
}else{
if (b>c){
document.write(b);
} else {
document.write(c);
}
}
</script>
例题5:打印出100以内的质数。
<script type=”text/javascript”> var count = 0; for(var i = 1 ; i < 100 ; i++){ for(var j = 1 ; j <= i ; j++){ if(i % j == 0){ count ++; } } if(count == 2){ document.write(i+""); } count = 0; } </script>
优化:将从1到100改为从1到10,因为100=10*10,一个增大,另一个就得减小,所以如果除到10都没有数能把100整除的话,那10以上就更没有了。
优化代码:
<script type=”text/javascript”> var count = 0; for(var i = 2 ; i<100 ; i++){ for(var j = 1 ; j<=Math.sqrt(i) ; j++){ //开根号函数 if(i % j == 0){ count ++; } } if(count == 1){ document.write(i+””); } count = 0; } </script>
例题6:判断今天周几:
<script type=”text/javascript”>
var data = window.prompt(‘input’);
switch(data){
case ”monday”:
console.log(‘working’);
break;
case “tuesday”:
console.log(‘working’);
break;
case ”wednesday”:
console.log(‘working’);
break;
case ”thursday”:
console.log(‘working’);
break;
case ”friday”:
console.log(‘working’);
break;
case ”saturday”:
console.log(‘ralaxing’);
break;
case ”sunday”:
console.log(‘ralaxing’);
break;
}
</script>
此时代码重复过多,我们可以利用switch函数特性来简化代码:
switch函数特性:当在case里面找到==data的关键字时,会一直向下执行,直到遇见break。
<script type=”text/javascript”> var data = window.prompt(‘input’); switch(data){ case ”monday”; case “tuesday”; case ”wednesday”; case ”thursday”; case ”friday”; console.log(‘working’); break; case ”saturday”; case ”sunday”; console.log(‘ralaxing’); break; } </script>