大量js基础语法题

158 阅读5分钟

两种将Javascript应用到网页的方式

行内js: <input type="button" value="点击有惊喜" οnclick="javascript:alert('哈哈哈哈')">
外部引用:在html文件中引入外部的js文件<script src="外部js文件地址"></script>
内部引用:在heard中定义script标签,里面书写JS代码

    <script>
        alert("这是js的内部引入");
    </script>

定义一个变量,变量的命名规则

js定义变量的三种方式:

  • var 定义可以修改的变量,不初始化会输出undefined,不会报错
  • const 定义定义不可修改,必须初始化的变量
  • let 定义块级作用域的变量

变量的命名规则:

  • 名称可包含字母、数字、下划线和美元符号
  • 名称必须以字母开头
  • 名称也可以 $ 和 _ 开头
  • 名称对大小写敏感
  • 保留字(比如 JavaScript 的关键词)无法用作变量名称

== 和 === 的区别

== 检查值相等,两边类型不同,再做值转换比较,返回结果 === 检查值和类型相等,不做类型转换,类型不同一定不等

JS简单数据类型,简要描述

js数据类型分为值类型(基本类型):string(字符型)用单引号或者双引号表示,number(数字型)表示数字的整数和浮点数,boolean(布尔型)false/true,null只有一个值表示空对象指针,undefined类型就是var声明变量未初始化,symbol创建的对象永远是唯一的,以及NaN是number的一种,非number。引用数据类型:object(对象),array(数组),function(函数)。

JS的算数运算符

一元运算符:
一元算术运算符包括一元加法(=+a)、一元减法(=-a)、递增(++)和递减(--)。只对一个表达式执行操作,并产生一个新值。 二元运算符:
二元运算符包括+,-,*,、/,%(求余)

JS比较运算符

> 大于运算符
< 小于运算符
<= 小于或者等于运算符
>= 大于或者等于运算符
== 相等运算符
=== 严格相等运算符
!= 不相等运算符
!== 严格不相等运算符

JS逻辑运算符

逻辑与,AND(&&) 逻辑或,OR(||) 逻辑非,NOT(!)

var i=100;i++;j=i++;y=++j;请问j和y分别是多少

理解i++和++j的区别,j和y都是102

计算下列算式,并将结果输出

DUeiDg.png 324*(23+214)/(568-129)-11*(235-24) = -2146.084282460137

住房公积金缴纳金额与工资两者的关系是:住房公积金 = 税前工资 * 0.1 * 2 ;编写程序,让用户输入税前工资,弹出对应的公积金数额

var GZ = prompt("请输入税前工资", "")
var regPos = /^\d+(\.\d+)?$/; //非负浮点数
var regNeg = /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/; //负浮点数
if (regNeg.test(GZ) || regPos.test(GZ)) {
    var GJZ = GZ * 0.1 * 2
    alert(GJZ)
} else {
    alert("请输入数字")
}

用JS计算下列算式,并将结果在弹出:

DUn44s.png var a = Math.pow(23 + Math.pow(5, 7) / 45, 2)

编写程序,提示用户输入圆锥的底面半径和高,然后弹出它的体积,计算圆锥体积的公式是:体积V=1/3π半径2*高

var palf = prompt("请输底面积", "")
var height = prompt("请输高", "")
alert(1 / 3 * Math.PI * Math.pow(palf, 2) * height)

如果今天是星期二,那么1000天后是星期几?用户输入一个天数,计算这个天数后是星期几。

//0是星期天, 0-6表示星期天到星期六
var day = 2;
var d = prompt("请输入天数,计算多少天后为星期几", "");
var a = Math.floor(d % 7);
var now = a + day
alert(d + "天后是星期" + now)

用户输入一个三位数,弹出各个数位的和。

var a = prompt("请输入一个三位数数字,来计算数位相加的和","");
	//获取个位上的数字
	var b = a%10;
	//获取十位上的数字
	var c = parseInt((a%100)/10);
	//获取百位上的数字
	var d = parseInt(a/100);
	
	var sc = b+c+d;
	alert("你输入的三位数数字是"+a+",位数相加得"+sc);

用户输入一个数字,然后判断这个数字能否被5、6整除的情况,根据情况弹出下面4种警告框:

var number = prompt("请输入一个整数", "")
if (number % 5 == 0) {
   alert(number + "能被5整数")
   if (number % 6 == 0) {
       alert(number + "能被5和6整数")
   } else {
       alert(number + "不能被6整除")
   }
} else {
   alert(number + "不能被5整除也不能被6整除")
}

用户输入一个数字,然后再输入一个数字。输入两个数字然后弹出警告框:

DUYTns.png DUYj9U.png

var one = prompt("输入一个整数", "")
var two = prompt("再输入一个整数", "")
if (one % 2 == 0 && two % 2 == 0) {
    alert("这两个输奇偶相同")
} else if (one % 2 !== 0 && two % 2 !== 0) {
    alert("这两个输奇偶相同")
} else {
    alert("这两个输奇偶不相同")
}

用户输入一个年份,判断这个年是否是闰年。

var year = prompt("请输入一个年份", "") if (year % 100 != 0 && year % 400 == 0 || year % 4000){ alert(year + "是闰年") } else { alert(year + "不是闰年") }

推导循环执行的顺序,用文字进行说明,并推导出可能的结果。

for (var m = 1, n = 2; m + n < 25; m++) {

n += 3;
console.log(n);
console.log(m);

} 第一次循环:m=1,n=2;1+2<25,条件二满足执行循环语句,n=5,输出m为1的值,m++ 第二次循环:m=2,n=5;2+5<25,条件二满足执行循环语句,n=8,输出m为2的值,m++ 第三次循环:m=3,n=8;8+5<25,条件二满足执行循环语句,n=11,输出m为3的值,m++ 第四次循环:m=4,n=11;11+4<25,条件二满足执行循环语句,n=14,输出m为4的值,m++ 第五次循环:m=5,n=14;14+5<25,条件二满足执行循环语句,n=17,输出m为5的值,m++ 第六次循环:m=6,n=17;17+6<25,条件二满足执行循环语句,n=20,输出m为6的值,m++ 第七次循环:m=7,n=20;20+7<25,条件二不满足,退出循环

推导循环执行的顺序,用文字进行说明,并推导出可能的结果。

for(var i = 30 ; i > 5 ; i -= 7) { console.log(i--); } 第一次循环:i=30;30>5,条件二满足执行循环语句,输出i为30,执行i=30-1,执行条件三i=29-7=22 第二次循环:i=22;22>5,条件二满足执行循环语句,输出i为22,执行i=22-1,执行条件三i=21-7=14 第三次循环:i=14;14>5,条件二满足执行循环语句,输出i为14,执行i=14-1,执行条件三i=13-7=6 第四次循环:i=6;6>5,条件二满足执行循环语句,输出i为22,执行i=6-1,执行条件三i=5-7=-2 第五次循环:i=-2;-2>5,条件二不满足,退出循环

用户输入一个数字n,计算1+2+3+4+……n的和

var n = parseInt(prompt("请输入一个正整数"));
var num = 0;
for (var i = 1; i <= n; i++) {
    num += i;


}
console.log(num);

用户输入一个整数n,计算n的阶乘。即n*(n-1)(n-2)……32*1

var n = parseInt(prompt("请输入一下正整数"));
var fa = 1;
for (var i = n; i >= 1; i--) {
    fa *= i;
    console.log(fa)
}

用户输入一个数字n计算

Ddavin.png

var total = 0;
var n = parseInt(prompt("请输入一下正整数"));
for (let index = 2; index <= n; index++) {
    a = (index + 1) / index;
    console.log(a)
    total = total + a
    console.log(total)
}
alert(total)

用户输入一个数字,在控制台中列出它的所有约数

 var n = parseInt(prompt("请输入一个正整数"));
    for(i = n ; i >= 1 ; i--){
        if(n % i == 0){          
            console.log(i);
        }
    }

水仙花数是一种特殊的四位数,它的特点就是,每个数位的四次方和,等于它本身。请编程找出来。

 /*水仙花数*/
        var nUnit = 0;//个位
        var nTen = 0; //十位
        var nHundred = 0; //百位
        var nKbit = 0; //千位
 
        for(var i = 1000; i <= 9999; i++ )
        {
        	 nUnit = i % 10;
        	 nTen = parseInt(i / 10) % 10;
        	 nHundred = parseInt(i / 100) % 10;
        	 nKbit = parseInt(i / 1000);
 
        	if(Math.pow(nUnit, 4) + Math.pow(nTen, 4) + Math.pow(nHundred, 4) + Math.pow(nKbit, 4) == i)
            {
                console.log(i);
            }
        }

如果一个数恰好等于它的约数之和,则称该数为“完美数”。

for (let i = 1; i <= 1000; i++) {
   var sum = 0;
   for (let j = 1; j < i; j++) {
       if (i % j == 0) {
           sum += j;
       }
   }
   if (sum == i) {
       console.log(i);
   }

}

用户输入一个数字,判断这个数字是否是质数

var num = parseInt(prompt("请输入一个数字", 2));
var count = true; //标记
for (var j = 2; j <= Math.sqrt(num); j++) {
    //Math.sqrt(num)   取平方根  减少循环的次数
    if (num % j == 0) {
        count = false; //当有被整除的情况标记false
    }
}
if (count == true) {
    alert(num + "是质数");
} else {
    alert(num + "不是质数");;
}

列出1~10000的所有质数

for (var i = 2; i <= 10000; i++) {
    var count = true;
    for (var j = 2; j < i; j++) {

        if (i % j == 0) {

            count = false; //当有被整除的情况标记true

        }
    }
    if (count == true) {
        console.log(i);
    }
}

苹果3元一个,鸭梨2元一个,桃子1元一个。现在想用200元正好买100个水果,在控制台中列出所有可能性

apple = 0; //苹果
        var pear = 0; //梨
        var peach = 0; //桃子
 
        for(apple = 0; apple <= 100; apple++)
        {
        	for(pear = 0; pear <= 100; pear++)
            {
            	for(peach = 0; peach <= 100; peach++)
                {
                	if((apple * 3 + pear * 2 + peach * 1 == 200) && (apple + pear + peach) == 100)
                    {
                    	console.log(apple, pear, peach);
                    }
                }
            }

有这样一个代码

switch (name) {
   case "jt":
       alert('金团网');
       break;
   case "ejt":
       alert('金团相相贷');
       break;
   case "ejin":
       alert("网上综合金融体验馆");
       break;
   default:
       alert("金团网络典当");
}

请用if来实现上面的效果

if (name === "jt") {
    if (name === "ejt") {
        if (name === "ejin") {
            alert("网上综合金融体验馆");
        } else {
            alert("金团网络典当");
        }
    } else {
        alert('金团相相贷');
    }
} else {
    alert('金团网');
}

JS有几种循环,分别是什么

for循环又分4种

for循环 forEach for...in for...of while循环又两种

do...while while 总的算下来又六种循环

break和continue的区别是什么

break:直接终止循环,并跳出
continue:终止本次循环,跳过continue语句后面的内容,进行下一次循环

请用循环计算出 1+2+3+4+5+...+100的值

var result = 0;
for (var i = 0; i <= 100; i++) {
    result += i;
}
console.log(result)

开发一款软件,根据公式(身高-108)*2=体重,可以有10斤左右的浮动。判断测试者体重为标准体重还是超重还是偏瘦

HTML代码

    <div>
        <h1>输入数据</h1>
        身高: <input type="text"><br>
        体重: <input type="text"><br>
        结果: <input type="text"><br>
        <button>点击</button>
    </div>

JS代码

    <script>
        const ino = document.querySelectorAll("input");
        const buo = document.querySelector("button");
        buo.onclick = function () {
            let bz = ino[1].value - (ino[0].value - 108) * 2
            if (bz > 10) {
                ino[2].value = "偏胖"
            } else if (bz < -10) {
                ino[2].value = "偏瘦"
            } else {
                ino[2].value = "正常"
            }
        }
    </script>

将下述代码使用switch写法的另一种方式实现,以及使用if判断实现一次

var grade = prompt("请输入分数");
       switch (parseInt(grade / 10)) {
            case 10:
            case 9:
                alert("你的成绩等级为优秀");
                break;
            case 8:
            case 7:
            case 6:
                alert("你的成绩等级为良好");
                break;
            default:
                alert("你的成绩等级为不及格,继续加油哦!");
        }

switch的实现方式:

var grade = prompt("请输入分数");
switch (parseInt(grade / 10)) {
    case 9:
        alert("你的成绩等级为优秀");
        break;
    case 10:
        alert("你的成绩等级为优秀");
        break;
    case 8:
        alert("你的成绩等级为良好");
        break;
    case 7:
        alert("你的成绩等级为良好");
        break;
    case 6:
        alert("你的成绩等级为良好");
        break;
    default:
        alert("你的成绩等级为不及格,继续加油哦!");
}

if 的实现方式

var grade = parseInt(prompt("请输入分数") / 10);
if (grade) {
    if (grade >= 6) {
        if (grade >= 9) {
            alert("你的成绩等级为优秀");
        } else {
            alert("你的成绩等级为良好");
        }

    } else {
        alert("你的成绩等级为不及格,继续加油哦!");
    }
}

输入月份,显示当月天数(输入2月时需要再次输入年份判断是不是闰年后在显示当月天数)

var grade = parseInt(prompt("请输入月份"));
switch (grade) {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
        alert("当月有31天");
        break;
    case 2:
        year = prompt("请再次输入年份");
        if (year % 100 != 0 && year % 400 == 0 || year % 4000) {
            alert(year + "是闰年" + "2月有29天")
        } else {
            alert(year + "不是闰年" + "2月有28天")
        }
        break;
    case 4:
    case 6:
    case 9:
    case 11:
        alert("当月有30天");
        break;
    default:
        zehngque
        alert("请输入正确月份");
}