2021-05-06 JavaScript基础(一)——面试整理

JS书写位置:
1.行内式 直接写在元素内部
2.内嵌式js
3.外部js <script src="my.js"></script>

JS注释:
单行注释 //
多行注释 shift+alt+a

JS输入输出语句:

prompt('这是一个输入框')
alert('弹出警示框')

变量:
变量初始化var myname = 'zxy达咩'
(变量值为数字可以不加引号)
更新变量 myname = 'zxy不达咩'
声明变量的特殊情况
只声明不赋值结果是undefined,不声明不赋值报错,允许不声明直接赋值使用

交换两个变量值:
需要一个临时变量

<script>
var temp;
var a1 = 1;
var a2 = 2;
temp = a1;
a1 = a2;
a2 = temp;
</script>

变量的数据类型:
js是动态语言,变量的数据类型可以变化

var x = 10;
x = 'zxy'

数字型Number:
八进制数字前加0,十六进制加#
数字型的最大值Number.MAX_VALUE
1.7976931348623157e+308
数字型的最小值Number.MIN_VALUE
5e-32
无穷大Infinity
无穷小-Infinity
非数字NaN
isNaN()这个方法用来判断非数字,是数字 false,不是数字 true

console.log(isNaN(12));  //false
console.log(isNaN('zxy'));  //true

字符串型:
字符串嵌套 外双内单,外单内双
字符串转义符
字符串长度 length
字符串拼接 + 号总结口诀:数值相加 ,字符相连
拼接加强 引引加加

布尔型 undefined Null:
一个声明后没有被赋值的变量会有一个默认值 undefined ( 如果进行相连或者相加时,注意结果)
一个声明变量给 null 值,里面存的值为空(学习对象时,我们继续研究null)

var variable;
console.log(variable);           // undefined
console.log('你好' + variable);  // 你好undefined
console.log(11 + variable);     // NaN
console.log(true + variable);   //  NaN
var vari = null;
console.log('你好' + vari);  // 你好null
console.log(11 + vari);     // 11
console.log(true + vari);   //  1

获取变量的数据类型:

console.log(typeof 类型)

转换为字符型:
1.把数字型转换为字符串类型 变量.toString()
2.利用String(变量)
3. !利用 + 拼接字符串 隐式转换 console.log(num + '')

转换为数字型:
1.!parseInt('') 得到的是整数
4. !parseFloat('')得到的是小数,浮点数
5. 利用Number(变量)
6. 利用算数运算 隐式转换 console.log('12'-0)

简单加法器:

        var num1 = prompt('请您输入第一个值:');
        var num2 = prompt('请您输入第二个值:');
        var result = parseFloat(num1) + parseFloat(num2);
        alert('您的结果是:' + result);

转换为布尔型:

        console.log(Boolean('')); // false
        console.log(Boolean(0)); // false
        console.log(Boolean(NaN)); // false
        console.log(Boolean(null)); // false
        console.log(Boolean(undefined)); // false

运算符:

  1. 算数运算符精度问题 浮点数值的最高精度是 17 位小数
// 浮点数 算数运算里面会有问题
        console.log(0.1 + 0.2); // 0.30000000000000004
        console.log(0.07 * 100); // 7.000000000000001
//我们不能直接拿着浮点数来进行相比较 是否相等
        var num = 0.1 + 0.2;
        console.log(num == 0.3); // false
  1. 递增和递减运算符
    后置:先原值运算,后自加(先人后己)
    前置:先自加,后运算(先已后人)
    表达式就有返回结果
        var e = 10;
        var f = e++ + ++e; // 1. e++ =  10  e = 11  2. e = 12  ++e = 12
        console.log(f); // 22
        // 后置自增  先表达式返回原值 后面变量再自加1
  1. 比较运算符
    == 判断两边值是否相等,此时有隐式转换
    ===判断两边的值和数据类型是否完全相同

  2. 逻辑运算符
    短路运算:当有多个表达式(值)时,左边的表达式值可以确定结果时,就不再继续运算右边的表达式的值;
    逻辑与: 语法: 表达式1 && 表达式2
    如果第一个表达式的值为真,则返回表达式2
    如果第一个表达式的值为假,则返回表达式1
    css console.log( 123 && 456 ); // 456
    console.log( 0 && 456 ); // 0
    逻辑或:语法: 表达式1 || 表达式2
    如果第一个表达式的值为真,则返回表达式1
    如果第一个表达式的值为假,则返回表达式2
    console.log(123 || 456); // 123
    console.log(0 || 456 || 456 + 123); // 456

  3. 赋值运算符

var age = 10;
age += 5;  // 相当于 age = age + 5;
age -= 5;  // 相当于 age = age - 5;
age *= 10; // 相当于 age = age * 10;
  1. 运算符优先级
    一元运算符里面的逻辑非优先级很高
    逻辑与比逻辑或优先级高

流程控制:
顺序执行、条件执行(if,三元表达式,switch)、循环执行(for,while,do-while)

{条件执行
三元表达式 :表达式1 ? 表达式2 : 表达式3;
如果表达式1为 true ,则返回表达式2的值,如果表达式1为 false,则返回表达式3的值
简单理解: 就类似于 if else (双分支) 的简写。
switch表达式:执行case 里面的语句时,如果没有break,则继续执行下一个case里面的语句。

一般情况下,if…else…与switch…case它们两个语句可以相互替换: switch…case 语句通常处理
case为比较确定值的情况, 而 if…else…语句更加灵活,常用于范围判断(大于、等于某个范围) switch
语句进行条件判断后直接执行到程序的条件语句,效率更高。而if…else 语句有几种条件,就得判断多少次。 当分支比较少时,if…
else语句的执行效率比 switch语句高。 当分支比较多时,switch语句的执行效率比较高,而且结构更清晰。
}

{循环执行
(双重)for循环

//打印n行n列⭐
var r = prompt('行数:');
var c = prompt('列数:');
var str = '';
for(var i = 1;i <= r;i++){
 	for(var j = 1;j <= c;j++){
 		str = str + '⭐';
 	}
 	str += '\n';
}
console.log(str);
        var str = '';
        for (var i = 1; i <= 10; i++) { // 外层循环控制行数
            for (var j = i; j <= 10; j++) { // 里层循环打印的个数不一样  j = i
                str = str + '★';
            }
            str += '\n';
        }
        console.log(str);
        // 九九乘法表
        // 一共有9行,但是每行的个数不一样,因此需要用到双重 for 循环
        // 外层的 for 循环控制行数 i ,循环9次 ,可以打印 9 行  
        // 内层的 for 循环控制每行公式  j  
        // 核心算法:每一行 公式的个数正好和行数一致, j <= i;
        // 每行打印完毕,都需要重新换一行
        var str = '';
        for (var i = 1; i <= 9; i++) { // 外层循环控制行数
            for (var j = 1; j <= i; j++) { // 里层循环控制每一行的个数  j <= i
                // 1 × 2 = 2
                // str = str + '★';
                str += j + '×' + i + '=' + i * j + '\t';
            }
            str += '\n';
        }
        console.log(str);

while 循环和 for 循环的不同之处在于 while 循环可以做较为复杂的条件判断,比如判断用户名和密码

(do)while循环

// while循环案例
        // 1. 打印人的一生,从1岁到100岁
        var i = 1;
        while (i <= 100) {
            console.log('这个人今年' + i + '岁了');
            i++;
        }
        // 2. 计算 1 ~ 100 之间所有整数的和
        var sum = 0;
        var j = 1;
        while (j <= 100) {
            sum += j;
            j++
        }
        console.log(sum);

        // 3. 弹出一个提示框, 你爱我吗?  如果输入我爱你,就提示结束,否则,一直询问。
        var message = prompt('张欣尧你娶我吗');
        while (message !== '娶') {
            message = prompt('张欣尧你娶我吗');
        }
        alert('I Do!!!');
// do while循环案例

        // 1. 打印人的一生,从1岁到100岁
        var i = 1;
        do {
            console.log('这个人今年' + i + '岁了');
            i++;
        } while (i <= 100)
        // 2. 计算 1 ~ 100 之间所有整数的和
        var sum = 0;
        var j = 1;
        do {
            sum += j;
            j++;
        } while (j <= 100)
        console.log(sum);

        // 3. 弹出一个提示框, 你爱我吗?  如果输入我爱你,就提示结束,否则,一直询问。
        do {
            var message = prompt('张欣尧你娶我吗?');
        } while (message !== '娶')
        alert('我好爱你啊');

continue 关键字 退出本次(当前次的循环) 继续执行剩余次数循环;
break 关键字用于立即跳出整个循环(循环结束)。
}

命名规范:
变量、函数的命名必须要有意义
变量的名称一般用名词
函数的名称一般用动词

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值