在B站学习的js基础,在这里做一下总结
目录
输入输出
在浏览器中显示内容
- prompt()--弹出输入弹窗 ,prompt取得值是字符型
- console.log()--控制台显示日志
- alert()---弹出输出弹窗
字符串拼接:用‘+’拼接
var name = "旗木卡卡西";
var edi = "村";
var age = 18;
var email = "aaaa.qq.com";
console.log('我叫' + name, '住在' + edi, age, email);
转义字符:\
换行:\n
alert("酷热难耐,\n终于大喊一句\"热死了\"");
数据类型
var声明变量
var a = 1 //整型
var c=010;//八进制前面为0
var b=0xa;//十六进制前为0x
var d='123' ;//字符串类型
var e=[1,2,3] ;//数组
os:在js中ture当0,false当1,undefined未定义
查看数据类型:typeof
var a=1;
console.log(typeof a);//int
转换数据类型
- 转为字符类型:+,tostring,string()
- 转整型:parseInt取整,Number强制转化整型
- 转布尔:Boolean
console.log(typeof a);
console.log(parseInt(a))
console.log(parseFloat(a));
两个数交换顺序
定义一个tem变量,再进行交换
var a = 1, b = 2
var tem
tem = a
a = b
b = tem
console.log(a, b);
运算符号
++p与p++的区别
- ++p先加1,后返回值
- p++先返回原值,在加1
var p = 1
console.log(++p + 1); //2
var c = 10
console.log(c++ + 10) //20
console.log(c) //11
"=","==","==="区别
- = 赋值
- == 判断,两边值是否相等,不要求数据类型
- === 全等 , 两边值和数据类型都要相等
&& 与,|| 或,! 非
console.log(3 > 5 && 3 > 2); //false
console.log(3 > 5 || 3 > 2); //true
//表达式进行非运算,要用到括号
console.log(!(3 < 5));
短路运算:有多个表达式,左边表达式可以确定结果,右边就不进行运算
- “&& ”1真结果为真,式1结果式2,0,空,否定为假,其他全为真
- “|| ”式1真结果为式1,式1假结果假2
优先级:&& > ||
流程控制分支结构
if else
进入网吧:
让用户输入年龄,判断是否大于18岁,若大于18岁输出‘欢迎进入网吧’,否则输出‘未成年不能进入网吧’
a = prompt('输入年龄')
a = Number(a) //转换数据类型
if(a>=18){
alert('欢迎进入网吧')
}else{
alert('未成年不能进入网吧')
}
判断平年闰年
用户输入年份判断平年闰年
year = prompt('输入年份')
//能被4整除且不能被100整除,或者能被400整除
year=Number(year)
if(year % 4==0 && year %100 !=0 || year%400==0){
alert('闰年')
}else{
alert('平年')
}
是否中奖
var name=prompt('输入姓名')
if(name=='刘德华'){
alert('中了5块钱!!')
}else{
alert('没中')
}
if - else if - else
成绩判断
var score=prompt('输入成绩')
if(score>=90){
alert('A')
}else if(score>=80){ //到这步90以上全部筛走了
alert('B')
}else if( score>=70){
alert("C")
}else if( score>=60){
alert("D")
}else{
alert("E")
}
三元运算符
条件表达式 ? 表达式1 : 表达式2
os:若 条件表达式为真,返回表达式1,否则返回表达式2
var num = 10;
var result = num > 5 ? '是的' : '不是';
console.log(result);
数字补0
若输入数字为8,则自动补充为08,否则保持原样
var a=prompt('输入数字')
var result=a>10 ? a : '0'+a;
alert(result);
switch
水果查询
输入水果名字,输出价格
var a=prompt('输入想要的水果');
switch (a) {
case '苹果':
alert('35.2/斤')
break;
case '梨':
alert('12.5/斤')
break;
default:
alert('无该水果价格')
break;
}
简易ATM
var sum=0;
var a=prompt('此页面显示\n1.存钱\n2.取钱\n3.显示余额\n4.退出')
switch(a){
case '1':
var mun=prompt('存多少:')
sum = sum + Number(mun);
alert('现有余额:'+sum);
a=prompt('此页面显示\n1.存钱\n2.取钱\n3.显示余额\n4.退出')
//break;
case '2':
var mun=prompt('取多少:')
sum = sum - Number(mun);
alert('现有余额:'+sum);
a=prompt('此页面显示\n1.存钱\n2.取钱\n3.显示余额\n4.退出')
//break;
case '3':
alert('现有余额:'+sum);
a=prompt('此页面显示\n1.存钱\n2.取钱\n3.显示余额\n4.退出')
//break;
case '4':
alert('正在退出');
break;
}
循环
for循环
用于循环次数可知的情况,判断条件不复杂
累加求和
var sum = 0;
for (var i = 1; i <= 100; i++) {
sum += i
}
console.log(sum);
1-100以内奇数,偶数分别求和
var sum1 = 0, sum2 = 0;
for (var i = 0; i <= 100; i++) {
if (i % 2 == 0) {
sum1 += i
} else {
sum2 += i
}
}
console.log(sum1);
console.log(sum2);
统计班级总成绩与平均值
弹出输入框,输入班级人数。再弹出与班级人数相同的成绩输入框,进而求出班级总成绩与平均成绩
var a=prompt('班级人数')
var sum4=0
for(var i=1;i<=a;i++){
var score = prompt('第'+i+'个成绩');
sum4=sum4+parseFloat(score);
}
alert('总成绩为:'+sum4)
alert('平均成绩为:'+sum4/a);
打印一行星星(用字符追加)
var str = ''
for (var i = 1; i <= 5; i++) {
str = str + '*'
}
console.log(str);
打印99乘法表
var str = ''
for (var i = 1; i <= 9; i++) {
for (var j = 1; j <= i; j++) {
str = str + (i + '*' + j + '=' + i * j) + ' '
}
str = str + '\n'
}
console.log(str)
while循环do while循环
用于循环条件较复杂
在用户输入“我爱你”才退出循环
var i = 1;
var str = prompt('你爱我吗?')
while (str !== '我爱你') {
var str = prompt('你爱我吗?')
}
alert('知道了')
do while先循环在判断
do{
var str=prompt('你爱我吗');
}while(str!='我爱你')
alert('我知道')
数组
创建数组:new关键字,字面量创建
var arr = [1, 2, 3, 'pink', true]
遍历数组:将数组元素从头到尾访问一遍
for (var i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
求数组最大值
先定义一个最大值,然后遍历数组,若其中有比max更大的值,就将该值赋值给max
var arr = [2, 6, 1, 77, 53, 23, 99];
var max = arr[0]
for (var i = 1; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
console.log(max);
筛选大于等于10的数到新数组
var arr=[2,0,6,1,77,0,52,0,25,7];
var new_arr=[]
// 用arr.length来代替索引,开始arr.length=0,有数之后会增加
for(var i=0;i<arr.length;i++){
if(arr[i]>=10){
new_arr[new_arr.length]=arr[i];
}
}
console.log(new_arr);
删除数组中0的值,形成不含0的新数组
var arr=[2,0,6,1,77,0,52,0,25,7];
var new_arr=[];
for(var i=0;i<arr.length;i++){
if(arr[i]!=0){
new_arr[new_arr.length]=arr[i];
}
}
console.log(new_arr);
反转数组
var arr=['red','green','blue','pink','purple']
var new_arr=[]
for(var i=arr.length-1;i>=0;i--){
new_arr[new_arr.length]=arr[i]
}
console.log(new_arr);
冒泡排序
- 将数组中第一个数与第二个数对比,若第一个数大于第二个数,则将第一个数与第二个数交换顺序
- 按第一步那样相邻的数比较,若前面一个数大于后面那个数则将这两个数位置交换
- 可以发现若一个数组需要比较arr.length-1趟,每一趟需要比较arr.length-i-1次,故需要两个for循环。外层循环代表需要比较的趟数,内层代表每趟比较需要比较的次数
var arr=[2,0,6,1,77,0,52,0,25,7]
var max=arr[0]
var new_arr=[];
for(var i=0;i<=arr.length-1;i++){ //管趟数
//管一趟中比较的次数
for(var j=0;j<=arr.length-i-1;j++){
if(arr[j]>=arr[j+1]){
var temp;
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
console.log(arr);
函数
为了提高代码的可用性,将一部分的代码进行封装,在编写的时候就可调用函数
调用函数时要注意:
- 若实参个数多于形参,会取到形参的个数
- 若少于,没有的参数会是undifind结果为NaN
简单函数
求任意两个数的和
function twoSum(a,b){
return a+b;
}
任意两数之间的和
function allSum(a,b){
var sum=0
for(var i=a;i<=b;i++){
sum+=i;
}
return sum;
}
求任意两个数的最大值(用三元运算符)
function getMax(a,b){
//三元运算符
return a>b ? a : b;
}
冒泡排序函数
function maoPao(arr){
// var tmp;
for(var i=0;i<arr.length-1;i++){
for(var j=0;j<arr.length-i-1;j++){
if(arr[j]>arr[j+1]){
var tmp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
}
}
}
// 返回值只能一个值,要返回多个值用数组
return arr;
}
arguments
arguments伪数组,具有length属性,按索引存储,但没有真正数组的一些方法。只有函数才有,在不知道实参是多少时用
求任意个数的最大值:
function getMAx1(){
var max=arguments[0];
for(var i=1;i<arguments.length;i++){
if(arguments[i]>max){
max=arguments[i];
}
}
return max;
}
翻转任意函数:
function reverse(arr){
var newArr=[];
for(var i=arr.length-1;i>=0;i--){
newArr[newArr.length]=arr[i];
}
return newArr;
}
总结
以上就是最近两天学习的JS基础知识,希望对各位看官有所帮助。