JavaScript面试常见问题(一)

JavaScript数据类型

简单数据类型:

number数字型
string字符串型
null
Undefined缺少值(申明了变量但是没有初始化)
Boolean布尔型(返回true或false)
NaN非数字类型

复杂数据类型:

Array数组
function函数
object对象

什么叫弱数据类型语言

简单来说就是声明变量时如果没有赋值,就看不出来声明的变量具体的类型,它可以是多变的,例如示例下的num就是两个不同的数据类型

let num = 10 // 数字型

let num = '123' //字符串型

强数据类型(Java):写出来一个单词就知道它存放的是什么数据类型 例如示例下,看到int就知道这个变量内只能是整型的

int num = 10

布尔类型在哪些情况下会返回false

0 false undefined ’ ’ null NaN

JavaScript数值类型的转换 显示转换 number类型

Number():可以用于任何的数据类型

parseInt:提取 整数数值

paseFloat:提取浮点数值

i++ 和++i的区别

i++ 先赋值后运算

++i先运算后赋值

= == ===的区别

=是赋值号,通常用来声明变量,将右边的值给左边

==是相等,用来比较两个值是否相等(也只比较两个值是否相等,不会比较数据类型是否相等)

===是全等,用来比较两边的值、数据类型必须完全一致

switch语句和if else if语句的区别

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

如何利用双重for循环实现冒泡排序

  let arr = [5, 2, 3, 4, 1, 6]
    for (let i = 0; i < arr.length - 1; i++) {
      for (let j = 0; j < arr.length - i - 1; j++) {
        if (arr[j] > arr[j + 1]) {
          // 声明一个临时变量 临时存储数据
          let temp = arr[j]
          arr[j] = arr[j + 1]
          arr[j + 1] = temp
        }
      }
    }
    console.log(arr) // 1,2,3,4,5,6

while循环执行思路:

while(条件表达式){
   //循环代码
   //操作表达式
}
  1. 先执行条件表达式,如果结果为true,则执行循环体代码;如果为false,则退出循环,执行后面代码
  2. 执行循环体代码
  3. 循环体代码执行完毕后,程序会继续执行条件表达式,如条件仍为true,则会继续执行循环体,直到循环条件为false时,整个循环才会结束

什么是数组

数组就是一组有序的数的集合

数组的操作(增删改查)

增(数组添加新的数据)arr.push(新增的内容)arr.unshift(新增的内容)
删(删除数组中的数据)arr.pop()arr.shift()arr.splice(操作的下标,删除的个数)
改(重新赋值)数组名[下标] = 新值
查(查询数组数据)数组名[下标]

函数的形参和实参

​ 在声明函数时,可以在函数名称后面的小括号中添加一些参数,这些参数被称为形参,而在调用该函数时,同样也需要传递相应的参数,这些参数被称为实参。

参数说明
形参形式上的参数 函数定义的时候 传递的参数 当前并不知道是什么
实参实际上的参数 函数调用的时候 传递的参数 实参是传递给形参的

break、continue、return的区别

  • break:结束当前循环体(如for、while)
  • continue:跳出本次循环,继续执行下次循环(如for、while)
  • return:不仅可以退出循环,还能够返回return语句中的值,同时还可以结束当前的函数体内的代码

JS 中作用域的范围及作用

1、全局作用域

作用于所有代码执行的环境(整个script标签内部)或者一个独立的js文件(全局有效)

2、局部作用域

作用于函数内的代码环境,就是局部作用域。因为跟函数有关系,所以也称作函数作用域(局部有效)

3、块级作用域

块作用域由{ }包括,if语句和for语句里面的{ }等({}内有效)

什么是对象

对象是一组无序的键值对的集合

对象的特点

  • 无序的数据的集合
  • 可以详细的描述某个事物

对象中取值和赋值的方法有哪些?它们有什么不同

1、点方法

2、中括号语法

不同点:中括号语法中可以支持变量和属性名,而点方法只能存放属性名而不支持变量

对象的操作(增删改查)

增(对象添加新的数据)对象名.新属性名 = 新值
删(删除对象中的属性)delete 对象名.属性名
改(重新赋值)对象.属性 = 值 对象.方法 = function() {}
查(查询对象)对象.属性 或者 对象[‘属性’] 对象.方法()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pixel0216

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值