目录
JavaScript
运算符
参考资料:JavaScript中运算符的优先级
运算符(优先级从高到低) | 描述 |
---|---|
[] () | 字段访问、数组下标、函数调用以及表达式分组 |
++ -- - ~ ! delete new typeof void | 一元运算符、返回数据类型、对象创建、未定义值 |
* / % | 乘法、除法、取模 |
+ - + | 加法、减法、字符串连接 |
<< >> >>> | 移位 |
< <= > >= instanceof | 小于、小于等于、大于、大于等于、instanceof |
== != === !== | 等于、不等于、严格相等、非严格相等 |
& | 按位与 |
^ | 按位异或 |
` | ` |
&& | 逻辑与 |
` | |
?: | 条件 |
= oP= | 赋值、运算赋值 |
, | 多重求值 |
&& 和 ||
参考资料:JavaScript中的&&(逻辑与)和||(逻辑或)
console.log(true && true); // true
console.log(true && false); // false
console.log(false && true); // false
console.log(false && false); // false
console.log( 1 && 2); // 2 //前面true输出后面
console.log( 1 && 0); // 0
console.log( 0 && 1); // 0 //前面false输出前面
console.log( 0 && ''); // 0
console.log(true || true); // true
console.log(true || false); // true
console.log(false || true); // true
console.log(false || false); // false
console.log( 1 || 2); // 1 //前面true输出前面
console.log(1 || 0); // 1
console.log(0 || 1); // 1 //前面false输出后面
console.log('' || 0); // 0
//"&&" 的优先级要高于 "||"
console.log(1 || 2 && 3); // 1
== 和 ===
参考资料:JavaScript中的==
与===
=
赋值,==
相等,===
恒等
- “==” 的比较规则
- 数据类型是否相同
- 如果相同,则比较两个数是否相等
- 如果不同,则先将两个数转换为相同数据类型,再进行比较
- “===”的比较规则
- 数据类型是否相同
- 若不同,直接返回false
- 若相同,则比较二者是否相等
try 和 catch
try和catch的用法
执行规则:首先执行try中的代码 如果抛出异常会由catch去捕获并执行 如果没有发生异常 catch去捕获会被忽略掉 但是不管有没有异常最后都会执行。
try 语句使你能够测试代码块中的错误。
catch 语句允许你处理错误。
throw 语句允许你创建自定义错误。(抛出错误)
finally 使你能够执行代码,在 try 和 catch 之后,无论结果如何。
=>
参考资料:js中=>的作用
(x) => x + 6
相当于
function(x){
return x + 6;
}
array 数组
console
参考资料:
console.log("写入字节数 : ", len); // 字符串 数字
console.log("写入字节数 : "+ len); // 字符串 字符串
JSON
参考资料:JavaScript JSON
JSON 是用于存储和传输数据的格式。通常用于服务端向网页传递数据 。
JSON 英文全称 JavaScript Object Notation,是一种轻量级的数据交换格式。
//例子
//对象 "sites" 是一个数组,包含了三个对象
{"sites":[
{"name":"Runoob", "url":"www.runoob.com"},
{"name":"Google", "url":"www.google.com"},
{"name":"Taobao", "url":"www.taobao.com"}
]}
- 语法规则
- 数据为 键/值 对。
- 数据由逗号分隔。
- 大括号保存对象
- 方括号保存数组
JSON.parse()
JSON.parse(text[, reviver])
用于将一个 JSON 字符串转换为对象。- 参数:
text
:必需, 一个有效的 JSON 字符串reviver
: 可选,一个转换结果的函数, 将为对象的每个成员调用此函数。
- 返回值:
- 返回给定 JSON 字符串转换后的对象
- 参数:
//例子
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>
<h2>为 JSON 字符串创建对象</h2>
<p id="demo"></p>
<script>
var text = '{ "sites" : [' +
'{ "name":"Runoob" , "url":"www.runoob.com" },' +
'{ "name":"Google" , "url":"www.google.com" },' +
'{ "name":"Taobao" , "url":"www.taobao.com" } ]}';
obj = JSON.parse(text);
document.getElementById("demo").innerHTML = obj.sites[1].name + " " + obj.sites[1].url;
</script>
</body>
//结果
为 JSON 字符串创建对象
Google www.google.com
JSON.stringify()
JSON.stringify(value[, replacer[, space]])
用于将 JavaScript 值转换为 JSON 字符串。- 参数:
value
:必需, 要转换的 JavaScript 值(通常为对象或数组)。replacer
:可选。用于转换结果的函数或数组。- 如果 replacer 为函数,则 JSON.stringify 将调用该函数,并传入每个成员的键和值。使用返回值而不是原始值。
- 如果此函数返回 undefined,则排除成员。根对象的键是一个空字符串:“”。
- 如果 replacer 是一个数组,则仅转换该数组中具有键值的成员。成员的转换顺序与键在数组中的顺序一样。
space
:可选,文本添加缩进、空格和换行符,- 如果 space 是一个数字,则返回值文本在每个级别缩进指定数目的空格,
- 如果 space 大于 10,则文本缩进 10 个空格。space 也可以使用非数字,如:\t。
- 返回值:返回包含 JSON 文本的字符串。
- 参数:
//例子
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>
<p id="demo"></p>
<script>
var str = {"name":"菜鸟教程", "site":"http://www.runoob.com"}
str_pretty1 = JSON.stringify(str)
document.write( "只有一个参数情况:" );
document.write( "<br>" );
document.write("<pre>" + str_pretty1 + "</pre>" );
document.write( "<br>" );
str_pretty2 = JSON.stringify(str, null, 4) //使用四个空格缩进
document.write( "使用参数情况:" );
document.write( "<br>" );
document.write("<pre>" + str_pretty2 + "</pre>" ); // pre 用于格式化输出
</script>
</body>
</html>
//结果
只有一个参数情况:
{"name":"菜鸟教程","site":"http://www.runoob.com"}
使用参数情况:
{
"name": "菜鸟教程",
"site": "http://www.runoob.com"
}
JSON 与 JS 对象的关系
很多人搞不清楚 JSON 和 JS 对象的关系,甚至连谁是谁都不清楚。
其实,可以这么理解:JSON 是 JS 对象的字符串表示法。它使用文本表示一个 JS 对象的信息,(JSON)本质是一个字符串。
var obj = {a: 'Hello', b: 'World'}; //这是一个js对象,注意js对象的键名也是可以使用引号包裹的,这里的键名就不用引号包含
var json = '{"a": "Hello", "b": "World"}'; //这是一个 JSON 字符串,本质是一个字符串
JSON(格式字符串) 和 JS 对象(也可以叫JSON对象 或 JSON 格式的对象)互转(JSON.parse 和 JSON.stringify)。
要实现从JSON字符串转换为JS对象,使用 JSON.parse() 方法:
var obj = JSON.parse('{"a": "Hello", "b": "World"}'); //结果是 {a: 'Hello', b: 'World'} 一个对象
要实现从JS对象转换为JSON字符串,使用 JSON.stringify() 方法:
var json = JSON.stringify({a: 'Hello', b: 'World'}); //结果是 '{"a": "Hello", "b": "World"}' 一个JSON格式的字符串
说句不严谨的话:JSON.parse() 就是字符串转 js 对象, JSON.stringify()就是 js 对象转字符串,它们前提是要 json 格式才有意义。
异步编程
参考资料:JavaScript 异步编程
异步(Asynchronous, async) 、同步(Synchronous, sync)
同步按你的代码顺序执行,异步不按照代码顺序执行,异步的执行效率更高。
异步就是从主线程发射一个子线程来完成任务。
子线程有一个局限:一旦发射了以后就会与主线程失去同步,
我们无法确定它的结束,如果结束之后需要处理一些事情,比如处理来自服务器的信息,我们是无法将它合并到主线程中去的。
JavaScript 中的异步操作函数往往通过回调函数来实现异步任务的结果处理。
//function()就是一个回调函数
//setTimeout()函数执行后,产生一个子线程在3秒之后执行function()函数
//同时主线程没有停止,且先加载出来
setTimeout(function () {
document.getElementById("demo1").innerHTML="RUNOOB-1!";
}, 3000);
document.getElementById("demo2").innerHTML="RUNOOB-2!";
console.log("2");
//结果
RUNOOB-1! //后出现,相当于加载图片视频
RUNOOB-2! //先出现