1、javascript有哪几种数据类型
原始数据类型: Undefined、Null、Boolean、Number、String、Symbol(ES6)
复杂数据类型: Object(是引用类型的值就是对象,其实是引用类型的一个实例)
引用类型是一种数据结构
2、判断数据类型
typeof 运算符
undefined - 如果变量是 Undefined 类型的
boolean - 如果变量是 Boolean 类型的
number - 如果变量是 Number 类型的
string - 如果变量是 String 类型的
Symbol- 如果变量是 Symbol 类型的
object - 如果变量是一种引用类型或 Null 类型的
Undefined和Null都是只有一个值的数据类型,
Undefined表示声明变量但是未初始化,值是undefined
Null的值null表示一个空对象指针,以便将来保持一个对象
使用typeof的 Null类型为什么?
这实际上是 JavaScript 最初实现中的一个错误,然后ECMAScript 沿用了。
现在,null 被认为是对象的占位符,从而解释了这一矛盾。
3、引用类型
对象是引用类型的一个实例,引用类型是一种数据结构
Object 对象
(1)ECMAScript 中的所有对象都由Object 对象继承而来
(2)Object 对象中的所有属性和方法都会出现在其他对象中
其他的对象还有:
Array,Date,RegExp,Function,基本包装类型(Boolean、Number、String)
基本类型的值不是对象,不应该有方法,但是为了方便操作基本类型的值,后台会完成,下列操作。
例子:
var s1 = "some text";
var s2 = s1.substring(2);
var s1 = new String("some text"); //创建String类型的一个实例
var s2 = s1.substring(2);//在实例上调用🈯️定的方法
s1 = null; //销毁这个实例
基本包装类型是一种特殊的引用类型,它和引用类型最大的区别
就是生存期不一样。自动创建的基本包装类型的对象,只存在于
一行代码的执行瞬间,然后被销毁。而用new操作符创建的引用
类型的实例,在执行流离开当前作用域之前都一直保存在内存中。
属性:
constructor:创建当前对象的函数(构造函数)
prototype:(原型)对该对象的对象原型的引用
方法:
hasOwnProperty( )
instanceof( )
是挂载在全局对象上的方法 识别对象的构造函数名字
Function
js中函数名可以想象为指针
没有重载:
重载,简单说,就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。
js中函数名可以想象为指针,声明了两个同名的函数,后面的会覆盖掉前面的。
函数的内部属性:
arguments和this
arguments
函数的参数
arguments.callee属性指回这个函数
this(函数内部自带的一个变量,用于指向函数执行的环境对象)
谁调用的指向谁
闭包:
闭包就是能够读取其他函数内部变量的函数。
只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成"定义在一个函数内部的函数"。
function f1(){
var n=999;
function f2(){
alert(n);
}
return f2;
}
var result=f1();
result(); // 999
为什么要使用闭包
用处:设计私有的方法和属性
闭包的典型框架应该就是jquery了。
这在做框架的时候体现更明显,有些方法和属性只是运算逻辑过程中的使用的,不想让外部修改这些属性,因此就可以设计一个闭包来只提供方法获取。
JavaScript中的函数运行在它们被定义的作用域里,而不是它们被执行的作用域里。
记忆重点:
拼写:
typeof instanceof
构造函数名,首字母大写
网友评论