IFE 2019年03月17日 分类: 前端知识体系 标签: javascript 浏览量: 1563
javascript的每个值,都属于某一数据类型。 按存储方式分为:值类型和引用类型。
值类型有:string number boolean null undefined symbol。值类型的值复制不会相互干涉。
引用类型有:object。 它又可以分为3个子类型:狭义的对象(object)、数组(array)、函数(function)。
引用类型的变量共用内存块节省空间,可以无限扩展属性。引用类型复制是变量指针的复制,修改是相互干预的。
var a={age:20}; var b=a; b// Object {age:20} b.age = 21; b// Object {age:21} a// Object {age:21} a === b // true
typeof返回的值有:undefined.string.number.boolean.object.function;所以它只能区分值类型的详细类型。
注意:undefined是值类型,null是Object,typeof(null)也返回object,因为空的对象什么也没有,只是定义了这个位置。
JavaScript 是一种动态类型语言,变量没有类型限制,可以随时赋予任意值,即变量的数据类型是不确定的。
但是各种运算符对数据类型是有要求的。当使用:字符串拼接,==运算符,if语句,逻辑运算(与 || !)时,如果运算符发现,运算子的类型与预期不符,就会自动转换类型。
也可通过Number()、String()和Boolean()三个函数,手动将各种类型的值,分别转换成数字、字符串或者布尔值。
不考虑运行环境,有:Boolean,Number,String,Array,Object,Function,Date,Error,RegExp。所有的引用类型都有构造函数。
它们的区别是相等运算符 == 比较两个值是否相等,严格相等运算符=== 比较它们是否为“同一个值”。
如果两个值不是同一类型,严格相等运算符===直接返回false,而相等运算符 == 会将它们转换成同一个类型,再用严格相等运算符进行比较。
推荐只有当:1,看某个对象的属性是否存在。2,看某个函数的参数是否存在 ,使用==, 其余情况都使用===
if(obj.a == null) { //这里相当于obj.a ===null || obj.a===undefined,简写形式,判断某个对象的属性是否存在 //这是jQuery源码中推荐的写法 } if(obj.a == null) {}//看某个对象的属性是否存在
布尔值代表“真”和“假”两个状态。“真”用关键字true表示,“假”用关键字false表示。布尔值只有这两个值。
下列运算符会返回布尔值:
如果 JavaScript 预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。转换规则是除了:false,0,NaN,'',undefined,null被转为false,其他值都为true
if(false||0||NaN||''||undefined||null) //false
JSON 和Math一样,只不是一个JS 内置对象而已,内置在JS的内置语法里,有两个API:
JSON.stringify({a:10,b:20}); JOSN.parse('{"a":10,"b":20}');
同时JS也是一种数据格式(JavaScript Object notation)js对象表示法(对象表示为键值对,数据由逗号分隔,花括号保存对象,方括号保存数组)