数据类型、运算符
- 数据类型
- 基本类型 Number(整数,浮点数) String(字符串) Boolean(布尔)
- 特殊类型 Null(空) Undefined(未定义)
- 组合类型 Object
主要五种:number string boolean null undefined-
判断类型:关键字 typeof
易错类型
// alert(typeof(NaN));
// alert(typeof(undefined));
// alert(typeof(null));
// alert(typeof(true));
// alert(typeof(3));
// alert(typeof("hello"));
// alert(typeof(object));
// alert(isNaN(3));
// alert(isNaN(true));
// alert(isNaN(false));
// alert(isNaN(undefined));
// alert(isNaN("hello"));
// alert(isNaN(null));
// alert(parseInt(3232652.144411441));
// alert(parseFloat(192.168));
// alert(parseFloat("192.167.1.1"));
// alert(Number("444"));
// alert("3+3");
// alert(eval(3+a));
-
运算符
- 表达式
- 算数运算符
- 关系运算符
- 赋值运算符
易错类型
/*alert(!true);//false
alert(!false);//true
alert(!0);//true
alert(!1);//false
alert(!2);//false
alert(!2>1);//false
alert(!null);//true
alert(!!10);//true*/
// var a = 6;
// alert(a>3&&a<5);
// alert(a>8&&a<6);
// alert(a>3||a<4);
// alert(a<7||a>2);
// alert(a>7||a<10&& a%3==0);
-
实例
很多代码都是没有优化过的,仅供参考
- 入职薪水10K,每年涨幅入职薪水的5%,50年后工资多少?
var a=10000;
var s = a;
for(var n=1;n<50;n++)
{
s = s + a*0.05
}
alert("50年后工资:"+s+"元");
- 为抵抗洪水,战士连续作战89小时,编程计算共多少天零多少小时?
var h = 89;
var day = h / 24;
var a = h % 24;
alert("共抗洪" + parseInt(day) + "天零"+ a + "小时")
- 小明要到美国旅游,可是那里的温度是以华氏度为单位记录的。它需要一个程序将华氏温度(80度)转换为摄氏度,并以华氏度和摄氏度为单位分别显示该温度。
提示:摄氏度与华氏度的转换公式为:摄氏度 = 5/9.0*(华氏度-32)
var hua = 80;
var she = 5 / 9.0 * (hua - 32)
alert("华氏"+ hua + "度等于" + she.toFixed(2) +"摄氏度")
- 给定一个三位数,分别把这个数字的百位、十位、个位算出来并显示。
var threeDigitNum = 987;
var bai = parseInt(threeDigitNum / 100);
var shi = parseInt(threeDigitNum % 100 / 10);
var ge = threeDigitNum % 10;
alert(threeDigitNum + "可以写成" + bai + "百" + shi + "十" + ge + "个" );
function myfunc(a){
if(a<1000&&a>99){
var bai = parseInt(a / 100);
var shi = parseInt(a % 100 / 10);
var ge = a % 10;
alert( a + "可以写成" + bai + "百" + shi + "十" + ge + "个" )
}
else{
alert("请输入三位数字!")
}
}
myfunc(374);
myfunc(567);
myfunc(1000);
myfunc(97);
- 判断一个整数,属于哪个范围:大于0,小于0,等于0
var intNum = parseInt(prompt("请输入一个整数:"));
if(intNum>0){
alert(intNum+"是属于0~正无穷的正整数");
} else if (intNum<0) {
alert(intNum+"是属于负无穷~0的负整数");
} else if(intNum==0){
alert(intNum + "是0");
}
- 判断一个整数,是偶数还是奇数
var intNum = parseInt(prompt("请输入一个整数:"));
if(intNum%2==0){
alert(intNum+"是偶数");
}else {
alert(intNum + "是奇数");
}
- 根据公式 (身高cm - 108)x2=体重斤,可以有十斤左右的浮动,判断测试者的身体是否合适
var weight = parseInt(prompt("请输入你的体重(斤):"));
var high = parseInt(prompt("请输入你的身高(cm):"));
var standart = (high - 108)*2-weight;
if (standart <= 10 && standart >= -10){
alert("你的身高体重非常标准");
}else {
alert("你身体比例不当");
}
- 已知圆的半径,求圆的面积
var r = parseInt(prompt("请输入圆的半径(cm):"));
var s = r*r*Math.PI.toFixed(2);//保留两位有效数字
alert("半径为"+r+"cm的圆的面积为"+s+"平方厘米");
- 输入年月日,求出该日期是当年的第几天(利用switch的穿透)
var year = parseInt(prompt("请输入年份:"));
var month = parseInt(prompt("请输入月份:"));
var day = parseInt(prompt("请输入日期:"));
var sum = 0;
switch(month){
case 12:sum += 30;
case 11:sum += 31;
case 10:sum += 30;
case 9:sum += 31;
case 8:sum += 31;
case 7:sum += 30;
case 6:sum += 31;
case 5:sum += 30;
case 4:sum += 31;
case 3:(year%4==0&&year%100!=0 || year%400==0)?sum += 29:sum += 28;
case 2:sum += 31;
case 1:sum += day;
}
alert("今天是这一年的"+sum+"天,你好吗")
-
个人所得税计算器
var salery = parseInt(prompt("你的工资为:"));
var rate = 0;
if (salery - 3500>0&&salery - 3500<=500) {
rate = (salery - 3500)*0.05 - 0;
} else if(salery - 3500>500&&salery - 3500<=2000){
rate = (salery - 3500)*0.1 - 25;
}else if(salery - 3500>2000&&salery - 3500<=5000){
rate = (salery - 3500)*0.15 - 125;
}else if(salery - 3500>5000&&salery - 3500<=20000){
rate = (salery - 3500)*0.2 - 375;
}else if(salery - 3500>20000&&salery - 3500<=40000){
rate = (salery - 3500)*0.25 - 1375;
}else if(salery - 3500>40000&&salery - 3500<=60000){
rate = (salery - 3500)*0.3 - 3375;
}else if(salery - 3500>60000&&salery - 3500<=80000){
rate = (salery - 3500)*0.35 - 6375;
}else if(salery - 3500>80000&&salery - 3500<=100000){
rate = (salery - 3500)*0.4 - 10375;
}else if(salery - 3500>100000){
rate = (salery - 3500)*0.45 - 15375;
}else{
alert("你不用交税啦,穷")
}
alert("你应该缴纳个人所得税"+ rate + "元");
alert("你税后工资为"+(salery-rate) + "元");
- 设计一个与电脑对战的石头剪刀布游戏
var thyNum = parseInt(prompt("请出拳(1.石头 2.剪刀 3.布)"))
switch(thyNum){
case 1:alert("你出的石头");break;
case 2:alert("你出的剪刀");break;
case 3:alert("你出的布");break;
default:alert("为何不出拳?")
}
//生成1-3随机数
var comNum = Math.floor(Math.random()*3)+1;
switch(comNum){
case 1:alert("电脑出的石头");break;
case 2:alert("电脑的剪刀");break;
case 3:alert("电脑的布");break;
}
if(comNum == thyNum){
alert("平局");
}else if(comNum == 1&&thyNum==3){
alert("你获胜");
}else if(comNum == 1&&thyNum == 2){
alert("你输了");
}else if(comNum == 2&&thyNum == 1){
alert("你获胜");
}else if (comNum==2&&thyNum == 3){
alert("你输了");
}else if (comNum == 3&&thyNum ==1){
alert("你输了");
}else if(comNum==3&&thyNum==2){
alert("你获胜");
}
- 依次输入第一个数,计算符号,第二个数,显示计算结果
var num1 = Number(prompt("第一个数:"));
var symbol = prompt("请输入符号");
var num2 = Number(prompt("第二个数:"));
switch(symbol){
case "+":alert(num1+"+"+num2+"="+(num1+num2));break;
case "-":alert(num1+"-"+num2+"="+(num1-num2));break;
case "*":alert(num1+"*"+num2+"="+(num1*num2));break;
case "/":alert(num1+"/"+num2+"="+(num1/num2));break;
case "%":alert(num1+"%"+num2+"="+(num1%num2));break;
default:alert("你输入的符号或数字有毛病");
}
- 之前用swift写过的一个小游戏,猜数字,现在用js写
var a = Math.floor(Math.random()*100+1);
var count = 1;
var msg = "";
do{
var b = parseInt(prompt("请猜一个1-100的整数"));
if (a != b){
msg = a>b?"再大点儿":"再小点儿";
alert(msg);
count++;
}
}
while(a!=b){
msg="对了";
alert(msg);
if(count>7){
document.write("共猜了"+count+"次,你的智商该充值了");
}else{
document.write("共猜了"+count+"次,你的才智过人");
}
}
- 打印乘法表(js不支持emoji就不搞怪叻)
var i = 1;
var j = 1;
for(i;i<10;i++){
for(j=1;j<=i;j++){
document.write(j+"*"+i+"="+(i*j)+" ");// 是一个大大的空格
}
document.write("<br />");
}
- 输出一元钱兑换方案(方法和百钱白鸡的差不多)
var oneJiao = 1;
var twoJiao = 2;
var fiveJiao = 5;
for(var x = 0;x>=0&&x<=2;x++){
for(var y = 0;y>=0&&y<=5;y++){
var z = 10-5*x-2*y;
if (z+5*x+2*y == 10&&z>=0){
document.write(x+"张五角、"+y+"张两角和"+z+"张一角<br>");
}
}
}
- 求两个数的最大公约数
var num1 = parseInt(prompt("请输入第一个数"));
var num2 = parseInt(prompt("请输入第二个数"));
var max = 1;
var a = num1 < num2 ? num1 : num2;
while (a > 1) {
if (num1 % a == 0 && num2 % a == 0) {
max = a;
break;
}
a -= 1
}
document.write(num1+"与"+num2+"的最大公约数是"+max);
- 输入a,输入最高位数,输出a+aa+aaa+aaa+aaaaa+...=???的形式
var a = parseInt(prompt("请输入a:"));
var wei = parseInt(prompt("请输入最高位数:"));
var s = 0;
var all = 0;
for(var i = 0;i<wei;i++){
s += a*Math.pow(10,i);
if(i<wei-1){
document.write(s+"+");
} else if(i==wei-1){
document.write(s+"=");
}
all += s
}
document.write(all);
- 输出五位数的所有回文数(形如 11211 12321 12121...)
var hui = 11001;
var count = 0;
for(hui;hui<=99999;hui++){
var ge = parseInt(hui%10);
var shi = parseInt(hui%100/10);
var bai = parseInt(hui%1000/100);
var qian = parseInt(hui%10000/1000);
var wan = parseInt(hui/10000);
if(ge==wan&&shi==qian){
document.write(hui+"<br/>");
count ++;
}
}
document.write("共找到"+count+"个回文数");