什么是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
- 0 (两种 -0 和 +0)
- 空字符串(’ ’ 和 " "两种形式的空字符串都会认为是false)
- null
- undefined
- 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 指向,不过不是在调用时生效,而是返回一个新函数。