1.js变量(数据类型)有字符串值,数值,布尔值,数组,对象,undefined。(null是object类型)
undefined:没有值的变量,其值是 undefined。typeof 也返回 undefined。任何变量均可通过设置值为 undefined 进行清空。其类型也将是 undefined。
Null:在 JavaScript 中,null 是 "nothing"。它被看做不存在的事物。不幸的是,在 JavaScript 中,null 的数据类型是对象。您可以把 null 在 JavaScript 中是对象理解为一个 bug。它本应是 null。您可以通过设置值为 null 清空对象,您也可以通过设置值为undefined 清空对象
Undefined 与 Null 的区别:Undefined 与 null 的值相等,但类型不相等
也可以这样区分:
原始数据:原始数据值是一种没有额外属性和方法的单一简单数据值。
typeof 运算符可返回以下原始类型之一:
- string
- number
- boolean
- undefined
(当然有String、Number、Boolean对象了,但是尽量不要使用这些对象)
复杂数据:
typeof 运算符可返回以下两种类型之一:
- function
- object
typeof 运算符把对象、数组或 null 返回 object。typeof 运算符不会把函数返回 object。
2.typeof 除了会返回原始数据string、number、boolean、undefined外,还会把对象、数组或 null 返回 object,以及返回函数为function。
3.js拥有动态类型,这意味着相同变量可用作不同类型
4.运算符: ==:判断值相等 ===:判断值和类型都相等,即全等 !=:判断值不相等 !==:值或者类型不相等,即不全等
5.JavaScript 对象无法进行对比,比较两个 JavaScript 将始终返回 false。见JavaScript 字符串
1.
var x = "Bill";
var y = new String("Bill");
// (x == y) 为 true,因为 x 和 y 的值相等
2.
var x = "Bill";
var y = new String("Bill");
// (x === y) 为 false,因为 x 和 y 的类型不同(字符串与对象)
3.
var x = new String("Bill");
var y = new String("Bill");
// (x == y) 为 false,因为 x 和 y 是不同的对象
4.
var x = new String("Bill");
var y = new String("Bill");
// (x === y) 为 false,因为 x 和 y 是不同的对象
6.原始值,比如“Bill Gates”,无法拥有属性和方法(因为它们不是对象)。
但是通过 JavaScript,方法和属性也可用于原始值,因为在执行方法和属性时 JavaScript 将原始值视为对象。
7.有两种方式访问对象属性:objectName.propertyName 和objectName["propertyName"]
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
JSON:
1.json对象,属性名必须带双引号,但是用.访问对象属性时又和js一样不能带引号
2.JSON 格式评估为 JavaScript 对象。
JSON 格式在语法上与创建 JavaScript 对象的代码相同。
见http://www.w3school.com.cn/js/js_json.asp
3.在从 web 服务器接收数据时,数据永远是(JSON对象的)字符串。JSON.parse正是用来解析这种字符串。这些数据会成为 JavaScript 对象。
在接收服务器数据时一般是(JSON对象的)字符串。我们可以使用 JSON.parse() 方法将数据转换为 JavaScript 对象。
发送数据:
var myObj = { name:"Bill Gates", age:62, city:"Seattle" };
var myJSON = JSON.stringify(myObj);
window.location = "demo_json.php?x=" + myJSON;
//typeof(myJSON) string
//结果将是遵守 JSON 标记法的一段字符串。
接收数据:
var myJSON = '{ "name":"Bill Gates", "age":62, "city":"Seattle" }';
var myObj = JSON.parse(myJSON);
document.getElementById("demo").innerHTML = myObj.name;
//typeof(myObj) object
4.JSON 格式评估为 JavaScript 对象。
JSON 格式在语法上与创建 JavaScript 对象的代码相同。
js对象:
{ name:"Bill Gates", age:62, city:"Seattle" };
json对象:
{ "name":"Bill Gates", "age":62, "city":"Seattle" };
见http://www.w3school.com.cn/js/js_json.asp
5.在向 web 服务器发送数据时,数据必须是字符串。通过 JSON.stringify() 把 JavaScript 对象转换为字符串。
结果将是遵守 JSON 标记法的一段字符串。myJSON 目前是一段字符串,并准备好送往服务器。
所以说json.parse不是解析json对象,而是浏览器返回的遵守JSON标记法的字符串;json.stringfy()不是转换成json对象,而是转换成遵守json标记法的字符串。毕竟写在js中时,json对象的格式是:myObj = {"name":"Bill Gates", "age":62, "car":null}; 而不是'myObj = {"name":"Bill Gates", "age":62, "car":null};'
6.注意,用for in循环遍历json对象时,遍历的是属性名(带引号),要访问值用括号标记法(json对象中属性名带引号,而点号访问属性又是不带引号的,括号标记法本来就要有引号的)。
与java不同,java只有可迭代类型才可以用增强for循环,普通的对象是不能增强for循环的,json则是对象就可以使用for in循环。
for in循环json数组时,和java不同,遍历的是数组索引