JavaScript基础知识点 与 基础面试题

我心飞翔 分类:javascript

JS基础知识点:

1. 什么是JavaScript

JavaScript一种直译式脚本语言,一种基于对象和事件驱动并具有安全性的客户端脚本语言;
也是一种广泛应用客户端web开发的脚本语言。
简单地说,JavaScript是一种运行在浏览器中的解释型的编程语言。

2. JavaScript的基本结构

<script type="text/javascript">
        JS语句;
</script>
 

3. JS的使用方法

  • HTML标签中内嵌JS;
<button onclick="alert('欢迎进入JavaScript世界')">点击me</button>
 
  • HTML页面中直接使用JS:
<script type="text/javascript">
        JS语句;
</script>
 
  • 引用外部JS文件:
<script language="JScript" src="JS文件路径"></script>
 

4. 变量

变量:是用于存储信息的"容器",是命名的内存空间,可以使用变量名称找到该内存空间;

  • JavaScript 的变量是松散类型(弱类型)的,就是用来保存任何类型的数据。在定义变量的时候不需要指定变量的数据类型。
  • JavaScript 定义变量有四种方法:const、let、var,还有一种是直接赋值,比如a = " a"(不规范,不推荐使用)
  • var:定义的变量可以修改,如果不初始化会输出undefined,不会报错。
  • let:let是块级作用域,定义的变量只在let 命令所在的代码块内有效,变量需要先声明再使用。
  • const:定义的变量不可以修改,而且必须初始化,const定义的是一个恒定的常量,声明一个只读的常量或多个,一旦声明,常量值就不能改变。
  • 在函数外声明的变量作用域是全局的,全局变量在 JavaScript 程序的任何地方都可以访问;
  • 在函数内声明的变量作用域是局部的(函数内),函数内使用 var 声明的变量只能在函数内容访问。

5. JavaScript 变量的命名规则

  • 变量命名必须以字母、下划线”_”或者”$”为开头。其他字符可以是字母、下划线、美元符号或数字。
  • 变量名中不允许使用空格和其他标点符号,首个字不能为数字。
  • 变量名长度不能超过255个字符。
  • 变量名称对大小写敏感(y 和 Y 是不同的变量),JavaScript 语句和变量都对大小写敏感。
  • 变量名必须放在同一行中。
  • 不能使用脚本语言中保留的关键字、保留字、true、false 和 null 作为标识符。

6. JS中的变量的数据类型

  • String:字符串类型。用""和''包裹的内容,称为字符串。
  • Number:数值类型。可以是小数,也可以是正数。
  • boolean:真假,可选值true/false。
  • Object:(复杂数据类型)
  • Null:表示为空的引用。var a = null;
  • Undefined:未定义,用var声明的变量,没有进行初始化赋值。var a;

7. JavaScript对象

  • JavaScript 对象是拥有属性和方法的数据,是变量的容器。
  • 对象:是封装一个事物的属性和功能的程序结构,是内存中保存多个属性和方法的一块存储空间。
  • JavaScript中所有事物都是对象:数字、字符串、日期、数组等。
  • JavaScript对象可以是字面量创建、分配给变量,数组和其他对象的属性、作为参数传递给函数、有属性和作为返回值。

用字面量创建:

function MyFun(){

};
 

分配给其他对象的变量,数组和属性:

var myFun = function(){

};
myArray.push(function(){

});
myObject.myFun = function(){

};
 

作为参数传递给其他函数:

function myFun(someFunc){
      someFunc();
}
myFunc(function(){

});
 

有属性:

var myFunc = function(){
};
 

作为返回值:

function myFunc(){
      return function(){

      };
}
 

在JavaScript中定义对象有5种方式:

  • 基于已有对象扩充其属性和方法
  • 工厂方式
  • 构造函数方式
  • 原型(“prototype”)方式
  • 动态原型方式

JS 中的对象分为三类:

  • 内置对象(静态对象):js本身已经写好的对象,我们可以直接使用不需要定义它。

常见的内置对象有 Global、Math(它们也是本地对象,根据定义每个内置对象都是本地对象)。

  • 本地对象(非静态对象):必须实例化才能使用其方法和属性的就是本地对象。

常见的本地对象有 Object、Function、Data、Array、String、Boolean、Number、RegExp、Error等

  • 宿主对象:js运行和存活的地方,它的生活环境就是DOM(文档对象模式)和BOM(浏览器对象模式)。

8. JavaScript函数

使用函数前要先定义才能调用,函数的定义分为三部分:函数名,参数列表,函数体

定义函数的格式:

function 函数名([参数1,参数2...]){
        函数执行部分;
        return 表达式;
}
 

函数有三种定义方法:

  • 函数定义语句
  • 函数直接量表达式
  • Function构造函数

函数有四种调用模式:

  • 函数调用模式(通过函数调用)
  • 方法调用模式(通过对象属性调用)
  • 构造函数模式(如果是作为构造函数来调用,那么this指向new创建的新对象)
  • 函数上下文(借用方法模式:它的this指向可以改变,而前三种模式是固定的);函数上下文就是函数作用域;基本语法:apply 和 call 后面都是跟两个参数。)

在javascript函数中,函数的参数一共有两种形式:(实际参数与形式参数)

  • 形参:在函数定义时所指定的参数就称之为“函数的形参”。
  • 实参:在函数调用时所指定的参数就称之为“函数的实参”。

9. 运算符

算术运算符:主要是用来进行JavaScript中的算术操作。(+、-、*、/、%、++、--)

赋值运算符:=用于给JavaScript 变量赋值,其作用就是把右侧的值赋给左侧的变量。

关系运算符:用于进行比较的运算符。主要有小于(<)、大于(>)、等于(==)、大于等于(>=)、小于等于(<=)、不等(!=)、恒等(===)、不恒等(!==)

逻辑运算符:逻辑运算符通常用于布尔值的操作,返回结果是一个布尔类型,一般和关系运算符配合使用,
有三个逻辑运算符:逻辑与(AND)、逻辑或(OR)、逻辑非(NOT)。

字符串连接运算符:是用于两个字符串型数据之间的运算符,它的作用是将两个字符串连接起来。
在JavaScript中,可以使用 ++= 运算符对两个字符串进行连接运算。

三目操作符(条件运算符):? 根据不同的条件,执行不同的操作/返回不同的值。

10. JavaScript条件语句

分为四种条件语句:

If 语句:只有当指定条件为true时,使用该语句来执行代码
if-else 语句:当条件为true时执行代码,当条件为false时执行其他代码
if-else if-else 语句:使用该语句来选择多个代码块之一来执行;
switch 语句:同上,switch的工作原理呢?
首先设置表达式n(通常是一个变量),随后表达式的值会与结构中的每个case值作比较;
如果存在匹配则该关联代码块执行;
然后使用break来阻止代码自动的向下一个case运行;
default关键词来规定匹配不存在时做的事情。

JS基础面试题:

需要领取:【点击这里领取面试题资料】

  • 介绍JavaScript的基本数据类型
  • 说说写JavaScript的基本规范?
  • jQuery使用建议
  • Ajax使用
  • JavaScript有几种类型的值?你能画一下他们的内存图吗?
  • 栈和堆的区别?
  • Javascript实现继承的几种方式
  • Javascript创建对象的几种方式?
  • Javascript作用链域
  • 谈谈this的理解
  • eval是做什么的?
  • 什么是window对象? 什么是document对象?
  • null,undefined的区别?
  • ["1", "2", "3"].map(parseInt) 答案是多少?
  • 关于事件,IE与火狐的事件机制有什么区别? 如何阻止冒泡?
  • 什么是闭包(closure),为什么要用它?
  • javascript 代码中的"use strict";是什么意思 ? 使用它区别是什么?
  • 如何判断一个对象是否属于某个类?
  • new操作符具体干了什么呢?
  • Javascript中,执行时对象查找时,永远不会去查找原型的函数?
  • 对JSON的了解?
  • JS延迟加载的方式有哪些?
  • 同步和异步的区别?
  • 什么是跨域问题 ,如何解决跨域问题?
  • 页面编码和被请求的资源编码如果不一致如何处理?
  • 模块化开发怎么做?
  • AMD、CMD规范区别?
  • requireJS的核心原理是什么?(如何动态加载的?如何避免多次加载的?如何缓存的?)
  • call和apply
  • documen.write和 innerHTML的区别
  • 回流与重绘
  • DOM操作
  • 数组对象有哪些原生方法,列举一下
  • 那些操作会造成内存泄漏
  • 什么是Cookie 隔离?
  • 响应事件
  • flash和js通过什么类如何交互?
  • Flash与Ajax各自的优缺点?
  • 有效的javascript变量定义规则
  • XML与JSON的区别?
  • HTML与XML的区别?
  • 渐进增强与优雅降级
  • Web Worker和Web Socket?
  • JS垃圾回收机制?
  • web应用从服务器主动推送data到客户端的方式?
  • 如何删除一个cookie?
  • attribute与property的区别?
  • Ajax请求的页面历史记录状态问题?

JavaScript基础知识点 与 基础面试题

JS常用基础算法:

  • 字符串
  • 数组
  • 排序
  • 查找
  • 树的搜索/遍历
  • 二叉树

JavaScript基础知识点 与 基础面试题

回复

我来回复
  • 暂无回复内容