js常见题

简介: js常见题

什么是js?js的特点是什么?

js: 是一种直译式脚本语言,是一种动态类型、弱类型、基于原型的高级语言。

特点:简单性;安全性;动态性;跨平台性;

简单性:它的变量类型是采用弱类型,并未使用严格的数据类型。

安全性:js 不允许直接访问本地的硬盘,而且不能将数据存放到服务器上,不允许对网络文档进 行修改和删除,只能通过浏览器实现信息浏览或动态交互,从而有效地防止数据的丢失。

动态性:js 可以直接对用户的输入做出响应而无需经过 Web 服务程序。它对用户的响应是采用以事件驱动的方式进行的。

跨平台性:js 仅依赖于浏览器本身,与操作系统无关,只要是能运行浏览器的计算机,并支持js 的浏览器就可以正确执行。

js由那三部分组成?

Java Script的三个主要组成部分是:

ECMAScript(核心)ECMAScript是一套标准,定义了一种语言的标准,规定了基本语法、数据类型、关键字、具体API的设计规范等,解析引擎设计的参考标准,但与具体实现无关,是JavaScript的核心。

DOM(文档对象模型):DOM可以把HTML看做是文档树,通过DOM提供的API可以对树上的节点进行操作。

BOM(浏览器对象模型):BOM是一套操作浏览器功能的API,通过BOM可以操作浏览器窗口.

JavaScript是一种专为与网页交互而设计的脚本语言,由以下三个不同的部分组成:

1、核心(ECMAScript):由ECMA-262定义,提供核心语言功能;

2、文档对象模型(DOM):提供访问和操作网页内容的方法和接口;

3、浏览器对象模型(BOM):提供与浏览器交互的方法和接口。

为什么最好把 JS 的 script 标签恰好放在 body 结束标签之前?

脚本在下载和执行期间会阻止 HTML 解析。把<script>标签放在底部,保证 HTML 首先完成解析,将页面尽早呈现给用户。

什么是语句?什么是表达式?怎么区分?

  • 表达式:产生一个值
  • 语句:执行一个操作

一个表达式可以产生一个值,有可能是运算、函数的调用、有可能是字面量。表达式可以放在任何需要值的地方。

语句可以理解为一个行为,循环语句和判断语句就是典型的语句。一个程序由很多的语句组成,一般情况下一个分号;分割一个一个的语句。

表达式不会对程序执行结果产生影响,而语句是程序的基本单位,对程序结果产生影响。

说明全局变量和局部变量的作用范围和生命周期?

全局变量:范围是整个HTML页面,生命周期整个程序

局部变量:范围是这个变量的代码块,生命周期是函数创建时执行,结束时销毁。

js的数据类型有几类?一共有几种?判断数据类型的方法是什么?

数据类型分为 基本数据类型 和 引用数据类型

基本数据类型:

undefined(未定义)

null(空值)  

string(字符串

number(数字)

boolean(布尔值)

引用数据类型:

object  对象

array  数组

function  函数

1.使用  type of  判断数据类型

这个方法很常见,一般用来判断基本数据类型,如:string,number,boolean,symbol,bigint(es10新增一种基本数据类型bigint),undefined等。

typeof 目前能返回string,number,boolean,symbol,bigint,unfined,object,function这八种判断类型

    2.Object.prototype.toString

      toString是Object原型对象上的一个方法,该方法默认返回其调用者的具体类型,更严格的讲,是 toString运行时this指向的对象类型, 返回的类型格式为[object,xxx],xxx是具体的数据类型,其中包括:String,Number,Boolean,Undefined,Null,Function,Date,Array,RegExp,Error,HTMLDocument,… 基本上所有对象的类型都可以通过这个方法获取到。

引用数据类型和基础数据类型的区别

一、存储上的区别

1.基本数据类型是存放在栈中的简单数据段。

2.引用数据类型是存放在堆内存中的对象,在栈内存中存放的是堆内存中具体内容的引用地址,通过这个地址可以快速查找到对象。

二、比较上的区别

1.基本数据类型的比较是值的比较为(true)

2.引用类型的比较是引用的比较为(false)

因为引用类型比较的是地址,也就是比较两个对象保存在栈区的指向堆内存的地址是否相同,虽然看起来一样,但是他们指向堆内存的地址是不一样的,所以两个对象不相等。

三、赋值上的区别

1.基本数据类型的赋值是简单赋值,如果一个变量向另一个变量赋值基本类型的值,会在变量对象上创建一个新值,然后把这个值复制到为新变量分配的位置上。

2.引用类型的赋值是对象引用

javascript的typeof返回哪些数据类型?

typeof 共返回6种数据格式:

1、object

2、undefined

3、string

4、number

5、boolean

6、function

 特别注意Array和Null返回的都是Object

null和undefined的区别是什么?

null  表示为空,没有值

undefined  表示为未定义,应该有值,但是没有赋值

JavaScript 中 undefined 和 not defined 的区别

undefined是javascript语言中定义的五个原始类中的一个,换句话说,undefined并不是程序报错,而是程序允许的一个值。

not defined是javascript在运行我们的javascript代码时,遇到没有定义就用来运算的变量时爆出来的错误。

JavaScript输出数据的方法?

  使用 alert()弹出警告框

  使用 docunment.write()将内容写到HTML文档中

  使用 docunment.innerHTML 写到HTML 元素中

  使用 console.log()写到浏览器的控制台

在 js 中哪些值会被转换为 false

  1. 0 (两种 -0 和 +0)
  2. 空字符串(’ ’ 和 " "两种形式的空字符串都会认为是false)
  3. null
  4. undefined
  5. NAN

介绍一下js的节流与防抖?

节流:规定在一个单位时间内,只能触发一次函数。如果这个单位时间内触发多次函数,只有一次生效。

防抖:就是指触发事件后在规定时间内函数只能执行一次,如果在规定时间内又触发了事件,则会重新计算函数的执行时间。

什么是事件冒泡?如何阻止事件冒泡和浏览器默认事件?

事件冒泡就是指父元素和子元素有相同的事件,当触发子元素事件时,会向上冒泡,同时也会触发父元素事件。

 阻止事件冒泡:e.stopPropagation();

 阻止浏览器默认事件:e.preventDefault();

什么是事件代理?什么是事件委托?

事件代理:把原本需要绑定的事件委托给父元素,让父元素担当事件监听的职务。

事件委托就是利用事件冒泡,只指定一个事件处理程序,管理当前绑定下的所有元素的事件。

什么是json?json可以存在哪几种数据类型?在什么时候用?

JSON指的是 JavaScript 对象表示法(JavaScript Object Notation)

JSON 是轻量级的文本数据交换格式

JSON 独立于语言:JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。

JSON 值可以是:

         数字(整数或浮点数)

        字符串(在双引号中)

        逻辑值(true 或 false)

        数组(在中括号中)

        对象(在大括号中)

        Null

JSON格式通常用于通过网络连接序列化和传输结构化数据。 它主要用于在服务器和Web应用程序之间传输数据,是XML的替代方法。

闭包是什么?有什么特性?对页面有什么影响?

       闭包就是函数内部和函数外部连接起来的桥梁。

       特性:封闭性:外界无法访问闭包内部的数据,除非闭包主动向外界提供访问端口

       持久性:一般的函数,调用完毕之后,系统自动注销函数,而对于闭包来说,在外部函数被调用之后,闭包结构依然存在

       影响:使用闭包会占有内存资源,过多的使用闭包会导致内存溢出等

闭包的实际应用:主要是用来封装变量,收敛权限。

this是指向的哪个全局变量,改变this指向的方法有几种?

以函数的形式调用时this永远都是window

以方法的形式调用时,this就是调用方法的对象

1.call()

2.apply()

3.bind()

call 和 apply的区别?

call():将函数作为对象的方法来调用,将指定参数传递给该方法

apply():将函数作为对象的方法来调用,将参数以数组形式传递给该方法

bind 也是改变 this 指向,不过不是在调用时生效,而是返回一个新函数。

目录
相关文章
|
6月前
|
JavaScript
什么是js?js的特点是什么?
什么是js?js的特点是什么?
|
3月前
|
资源调度 JavaScript 前端开发
如何开始使用 Next.js?
【8月更文挑战第4天】如何开始使用 Next.js?
49 3
|
3月前
|
JavaScript
什么是js?
什么是js?
150 0
|
5月前
|
JavaScript 安全 前端开发
JS神奇的或0(|0)
可以看到明显的带或0运算与不带或0运算的结果无论是位数还是符号位都有不同。 那这中间到底发生了什么? 这里找一个数字为例:117063531626496 要想验证这个问题,思路如下: 1,对比变更前后的数字的二进制格式 2,找到是否有数字表示的安全边界 首先按照思路1,我们看一下这个数字和这个数字或0后的二进制格式分别是什么:
|
5月前
|
JavaScript 前端开发
什么是js
什么是js
464 4
|
5月前
|
XML JavaScript 前端开发
JS是什么
JS是什么
125 0
|
6月前
|
存储 JavaScript 前端开发
js的一些小技巧
js的一些小技巧
|
JavaScript
js实现全选反选
js实现全选反选
|
JavaScript
JS数学方法
JS数学方法
|
JavaScript
js小技巧(2)
js小技巧(2)