上代码块先,今天这要补充一些东西。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
console.log(0.1 + 0.2); //结果为0.3000000000004,小数算法有问题
console.log(12 / 10); //这样算没问题,为1.2
//不能直接拿浮点数来比较,如下结果为false
console.log(0.1 + 0.2 == 0.3); //false
var num1 = 0, num2 = 0, num3 = 10, num4 = 10, num5 = 10;
console.log(num1++); //答案是0
console.log(++num2); //答案是1
console.log(num3++ + 10); //答案是20 (重),说明num3++ 在+10和表达之后
console.log(num3); //答案是11
var a1 = num4++ + 1;
console.log(a1); //(重!)答案是11,说明变量++是在语句结束之后(先返回,后计算)
var a2 = ++num5 + 1;
console.log(a2); //(重) 答案是12,说明++变量是在 语句之中(先自加计算,后返回)
//后置++先返回值,后自加+
console.log(0 == '0'); //true,会自动转型
console.log(0 === '0'); //全等,要求值和类型都一样
console.log(0 !== '0'); //全等,要求值和类型都一样(不同的写法)
console.log(0.1 + 0.2 == 0.3); //答案是false!!??
console.log(0.1 + 0.9); //答案是1
console.log(0.1 + 0.9 !== 1); //答案居然是false??
console.log(0.1 + 0.9 == 1); //答案是true,看来小数+小数==小数
//----------------------------以上是一些运算符--------------------------------------
console.log(3154 && 1); //结果是1(逻辑与&的短路运算)逻辑为false会中断并输出(包括到达结尾)
console.log(3154 && 0); //结果是0 (重)
console.log(0 && 3154); //结果是0
console.log('' && 3154); //结果是 (啥都没有,空一行)
// null 0 undefined '' NaN 为假(false),其余为真(true)
console.log(1 || 3154 || 888); //结果是1 (逻辑或||的逻辑短路运算)
console.log(0 || 3154); //结果是3154 遇到逻辑是true的就中断并输出
//----------------------一个应用(上面的知识点挺重要的)-------------------------------
var num6 = 0;
console.log(123 || num6++); //(短路操作)
console.log(num6); //num6的结果是 0 ,因为逻辑中断后不在进行运算(++num6也是)
//-----------------------------以上是逻辑的运算以及一个应用(重)-------------------------------
if ('0.1+0.9' == '1') {
console.log('my3154');
} //结果是false(1.0也是不行)
if ('0.1' + '0.9' == '1.0') {
console.log("QAQ");
} //结果还是false(1.0也不行)
if ('0.1' + '0.9' == 1.0) {
console.log("HHH");
} //结果还是false(1.0也不行)
if (1 == '1') {
console.log('AAA');
} //大于不行,等于行,全等不行(这不废话吗?)
if (2 < '3.1') {
console.log('yeah'); //自动转型,永远的神
}
if (null == 0) {
console.log("6324");
} //false
if (undefined == 0) {
console.log(6325);
} //false
if (null == undefined) {
console.log(6326);
} //这怎么又成true了?(全等不相等,)
var num7 = '0.1+0.9';
num7 += 0;
console.log(num7); //结果居然是。。。。。 0.1+0.90 (字符串)
//----------------------以上是if初见,遇到了新疑惑和旧疑惑----------------------------------
var age = prompt('你今年多大了?');
if (parseInt(age) >= 18) {
alert('二块五一小时,享受吧');
} else {
alert('在等' + (18 - age) + '年吧~_~');
}
//----------------------以上是if应用,进入网吧---------------------
var age3 = prompt('告诉我一个年份:');
parseInt(age3);
if (age3 % 4 == 0 && age3 % 100 != 0 || age3 % 400 == 0) {
alert('是闰年');
} else {
alert('是平年');
}
//------------------------if应用和逻辑判断的综合应用--------------------------
var a1 = 5 > 1 ? '是的' : '不是'; //三元表达式格式----(判断式 ? true时执行表达式:false时执行表达式;)
console.log(a1); //可以代替简单的if else 语句
var a2;
a2 = prompt('输入个数字');
a2 = parseInt(a2) % 2;//自动转换真方便啊
switch (a2) { //注意,switch的case判断为全等(!==)
case 0:
alert('这是个偶数');
break; //break挺重要.
case 1:
alert('这是个奇数');
break
default:
alert('上面的break很重要,这里不用加break了\n \t话说你为啥不输个数字啊?'); //上面的break很重要,这里不用加break了
} //这个\t是什么鬼?
//switch判断是判断后直接跳到执行语句执行,所以分支多时效率比ifelse高一点
//---------------------以上是一些三元表达式,switch以及笔记------------------------------------
for(var i=1; i<10;i++){
for(var j=i;j<10;j++){
console.log(i,'X',j,'=',i*j);
}
}
//------99乘法表0.1------------------------------------------
// 采用追加字符串的方式,使得在一行中显示
var a3 ='';
var target='QAQ'
for(var i=0 ; i<5;i++){
a3 = a3 + target;
}
console.log(a3);
//------------------上面的非常重要!!!!!-------------------------------------
// var a3='';
// for(var i=1;i<10;i++){
// for(var j=1;j<10;j++){
// var target=i+'X'+j+'='+i*j+' ';
// a3=a3+target;
// //a3='';
// if(j!==9){
// //a3+'\n';
// console.log(a3);
// }
// }
// }失败的99乘法表
var a3='';
var target = prompt('展示一个字符吧');
for(var i=0;i<5;i++){ //不输入or点取消都是null
for(var j=0;j<5;j++){
a3=a3+target;
}
// console.log(a3);
// console.log('\n');
//a3 += '\n';
a3 = a3 + '\n'; //这个和上面那个效果一样,所以写上面那个好一点
}
console.log(a3); //在js里面是先处理完毕,最后输出。学到了QaQ
//------------------------------分割线------------------------------------
var a3='';
for(var i=1;i<10;i++){
for(var j=1;j<10;j++){
a3+=i+'X'+j+'='+i*j+'';
}
a3+='\n';
}
console.log(a3);
//------------------------------------99乘法表ver0.2--------------------------------
var a3='';
for(var i=1;i<10;i++){
for(var j=1;j<=i;j++){
a3+=i+'X'+j+'='+i*j+' ';
}
a3+='\n';
}
console.log(a3);
//----------------------99乘法表vver1.0----------------------------------------
var a3='';
var target = prompt('输入一个字符,求求了,不输入or点取消都是null');
for(var i=0;i<9;i++){
for(var j=0;j<i;j++){
a3+=' ';
}
for(var k=0;k<9-j;k++){
a3+=target;
}
a3+='\n';
}
console.log(a3);
//----------------------倒三角ver0.1--------------------------------------------
var a3='';
var target=prompt('同上,这次试试叼叼的~');
for(var i=0;i<11;i++){
for(var j=0;j<i;j++){
a3+=' ';
}
for(var k=0;k<11-2*j;k++){
a3+=target;
}
a3+='\n';
}
console.log(a3);
//---------------------倒三角ver0.2-----------------------------------------
var a3 = '';
var target=prompt('再给一个,这次绝对厉害!');
for(var i=0;i<11;i++){
for(j=0;j<i;j++){
a3+=' ';
}
for(var k=0;k<11-j*2;k++){
a3+=target;
}
if(k>0){
a3+='\n';
}
}
console.log(a3);
alert(a3); //alert也可以展示输出的结果,而且同console中的一样
//-----------------------------倒三角ver0.3--------------------
</script>
</body>
</html>
首先,神一般的null和undefined,简直了,有机会多问问他人。
其次,自动转型有利有弊,使用需要谨慎!
令人激动的,if,switch,for以及&&,||的用法和C几乎完全相同(说实话没看到什么不同之处)。
令人沮丧的,就是js的输出比较抽象,需要使用一种叫做增长字符串的方式来进行如写‘99乘法表’等操作,不过在练习几次以后也可以掌握,还好C在这方面下了功夫,可以有一个构思,不然一定会很痛苦~~>_<~~,加油吧。