1.什么是js?js的特点是什么?
js: 是一种直译式脚本语言,是一种动态类型、弱类型、基于原型的高级语言。
特点:简单性;安全性;动态性;跨平台性;
简单性:它的变量类型是采用弱类型,并未使用严格的数据类型。
安全性:js 不允许直接访问本地的硬盘,而且不能将数据存放到服务器上,不允许对网络文档进行修改和删除,只能通过浏览器实现信息浏览或动态交互,从而有效地防止数据的丢失。
动态性:js 可以直接对用户的输入做出响应而无需经过 Web 服务程序。它对用户的响应是采用以事件驱动的方式进行的。
跨平台性:js 仅依赖于浏览器本身,与操作系统无关,只要是能运行浏览器的计算机,并支持js 的浏览器就可以正确执行。
2.js由那三部分组成?
Java Script的三个主要组成部分是:ECMAScript(核心),DOM(文档对象模型),BOM(浏览器对象模型)。
3.为什么最好把 js 的 script 标签恰好放在 body 结束标签之前?
脚本在下载和执行期间会阻止 HTML 解析。把<script>标签放在底部,保证 HTML 首先完成解析,将页面尽早呈现给用户。
4.什么是语句?什么是表达式?怎么区分?
- 表达式:产生一个值
- 语句:执行一个操作
一个表达式可以产生一个值,有可能是运算、函数的调用、有可能是字面量。表达式可以放在任何需要值的地方。
语句可以理解为一个行为,循环语句和判断语句就是典型的语句。一个程序由很多的语句组成,一般情况下一个分号;分割一个一个的语句。
表达式不会对程序执行结果产生影响,而语句是程序的基本单位,对程序结果产生影响。
5.说明全局变量和局部变量的作用范围和生命周期
全局变量:范围是整个HTML页面,生命周期整个程序
局部变量:范围是这个变量的代码块,生命周期是函数创建时执行,结束时销毁。
6.数据类型有几种?一共有几种?判断数据类型的方法是什么?
有 基本数据类型 和 引用数据类型
基本数据类型:
undefined(未定义)
null(空值)
string(字符串)
number(数字)
boolean(布尔值)
引用数据类型:
object 对象
array 数组
function 函数
使用 type of 判断数据类型
判断数据类型的方法:object.prototype.tostring.call()
7.js中的命名规则
1. 变量
命名方法:小驼峰式命名法。
命名规范:前缀应当是名词。
2. 常量
命名方法:名称全部大写。
命名规范:使用大写字母和下划线来组合命名,下划线用以分割单词。
- 函数
命名方法:小驼峰式命名法。
命名规范:前缀应当为动词。
4. 构造函数
命名方法:大驼峰式。
命名规范:前缀为名称。
5. 类的成员
① 公共属性和方法:小驼峰。
② 私有属性和方法:前缀为_(下划线),后面小驼峰。
- 引用数据类型和基础数据类型的区别?
一、存储上的区别
1.基本数据类型是存放在栈中的简单数据段。
2.引用数据类型是存放在堆内存中的对象,在栈内存中存放的是堆内存中具体内容的引用地址,通过这个地址可以快速查找到对象。
二、比较上的区别
1.基本数据类型的比较是值的比较为(true)
2.引用类型的比较是引用的比较为(false)
因为引用类型比较的是地址,也就是比较两个对象保存在栈区的指向堆内存的地址是否相同,虽然看起来一样,但是他们指向堆内存的地址是不一样的,所以两个对象不相等。
三、赋值上的区别
1.基本数据类型的赋值是简单赋值,如果一个变量向另一个变量赋值基本类型的值,会在变量对象上创建一个新值,然后把这个值复制到为新变量分配的位置上。
2.引用类型的赋值是对象引用
8.javascript 的 typeof 返回哪些数据类型?(写英文)
typeof 共返回6种数据格式:
1、object
2、undefined
3、string
4、number
5、boolean
6、function
特别注意Array和Null返回的都是Object
9.如何判断 NaN?
1、NaN 不是一个数字且数据类型为 number,而且不等于自身
可直接采用内置方法 isNaN
function isNaN(n) { if (n !== n) { return true; } else { return false; }}
2、利用 NaN 是唯一个不等于任何自身的特点
var a=NaN; a==a; //false
3、object.is 方法
console.log(Object.is("a", NaN)); console.log(Object.is(1, NaN)); console.log(Object.is(NaN, NaN));
10. null和undefined的区别是什么?
null 表示为空,没有值
undefined 表示为未定义,应该有值,但是没有赋值
null是一个表示"无"的对象,转为数值时为0
undefined是一个表示"无"的原始值,转为数值时为NaN
11.JavaScript中undefined和not defined的区别
undefined:不明确的,也就是不知道用来干嘛的(虽有无值)
not defined: 未定义的,也就是突然冒出来的(无中生有)
12. 什么是全局污染?怎么避免全局污染?
全局污染:当使用了相同的全局变量或定义了相同命名的顶层函数,都会造成命名冲突
解决方法:只创建一个全局变量,并定义该变量为当前应用容器,把其他变量追加在该命名空间下。及利用匿名函数(自执行函数)将脚本包裹起来。
13. javaScript输出数据的方法?
使用 alert()弹出警告框
使用 docunment.write()将内容写到HTML文档中
使用 docunment.innerHTML 写到HTML 元素中
使用 console.log()写到浏览器的控制台
13.例举3种强制类型转换和2种隐式类型转换?强制类型转换和隐式类型转换的区别是什么?
强制转换;String();Boolean();Number (数字)
隐式转换;== 之间发生隐式转换
一元运算符 + - !
区别是;强制类型转换有确定的方法,隐式类型转换只能通过运算符来进行隐式转换
14.在 js 中哪些值会被隐式转换为 false
- 0 (两种 -0 和 +0)
- 空字符串(’ ’ 和 " "两种形式的空字符串都会认为是false)
- null
- undefined
- NAN
14.运算符分为哪几类?哪些运算符常用作判断?简述运算符的优先级
运算符包含6大类:算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、三元(目)运算符。
逻辑运算符常用作布尔判断
运算符优先级:小括号、一元运算符、算术运算符、关系运算符、相等运算符、逻辑运算符赋值运算符、逗号运算符
15.++i 和i ++ 的执行顺序有什么区别?
++i 是先自增,后赋值。
i++ 是先赋值,然后再自增。
16.等于和绝对等于的区别?
==:会进行类型的转换之后再判断两者是否相等
===:不会进行数据类型的转换,先判断两边的数据类型是否相等,如果数据类型相等的话才会进行接下来的判断,再进行等式两边值得判断
等于就是对类型不同,但是值相同时,会进行隐式类型转换,已达到判断的目的;
绝对等于,在判断时会先进行类型判断,如果类型相等的话才会进行接下来的判断
16.请写出js的入口函数?并讲解入口函数的作用。
window.οnlοad=function(){} 改变加载顺序,等待页面加载完毕之后执行。