#前端 JS

JavaScript为Web编程语言,与Java无关。Web程序中,HTML定义页面内容;CSS描述页面布局;JS控制页面行为;
相关手册
①JS实例:https://www.runoob.com/js/js-examples.html
②JS对象实例:https://www.runoob.com/js/js-ex-objects.html
③JS浏览器支持实例:https://www.runoob.com/js/js-ex-browser.html
④JS HTML DOM实例:https://www.runoob.com/js/js-ex-dom.html
⑤JS内置对象、Browser对象、HTML DOM 对象:https://www.runoob.com/jsref/jsref-tutorial.html

零、Chrome调试代码
——————————————————————————
1.按F12或右键->检查或菜单栏:更多工具->开发者工具开启调试页面。
其中,

一、函数
——————————————————————————
1.未声明变量赋值创建的全局变量,是全局对象的可配置属性,可以删除。

var var1 = 1; // 不可配置全局属性
var2 = 2; // 可配置全局属性
delete var1; // false
console.log(var1); // 1
delete var2;
console.log(var2); // 已删除,报错
2.变量在函数中没有var声明,也为全局变量;
3.全局变量都是window对象。
carName = "BMW"; // 其他地方可使用window.carName

二、事件
——————————————————————————
事件可以是浏览器行为或用户行为。

三、字符串
——————————————————————————
字符串可以创建为对象,但这么做会拖慢执行速度并产生副作用;

四、标签
——————————————————————————
JS语句可以加上标签标记
label:
statements
break labelname 可以跳出任何JS代码块

五、typeof
——————————————————————————
1.数组为特殊对象类型,typeof [1,2,3] 将返回object;
2.null表示什么都没有,typepf null将返回object;
3.null == undefined, 但null !=== undefined;

六、数据类型
——————————————————————————
1.NaN的数据类型是number;
2.一元运算符 + 可以将变量转换为数字(逻辑不能转换的情况下仍是数字,其值为NaN);
3.Number(false) // 0;Number(true) // 1;
4.JS会尝试将错误的数据类型转换为“正确”的数据类型:
5 + null // 5,null->0;"5" + null // "5null",null->“null”;"5" + 1 // "51",1->“1”;"5" - 1 // 4,"5"->5;
5.输出对象或变量会自动调用变量的toString();

七、调试
——————————————————————————
1.JS中插入console.lot()在调试窗口打印变量值;
2.JS中插入debugger;语句设置断点;

八、声明提升(hoisting)
——————————————————————————
1.JS的变量及函数可以先使用再声明,不过解释器会在执行时将声明提升到方法体顶部,但是变量初始化不会提升;
2.JS严格模式(在脚本或函数头添加"use strict";)不允许使用未声明的变量;

九、严格模式
——————————————————————————
1.消除JS语法的不严谨处,提升编译效率;
2.不允许使用未声明变量、删除变量、变量重名、使用八进制、使用转义字符、对只读属性赋值、对使用getter方法读取的属性进行赋值、this指向全局对象等;

十、常见错误
——————————————————————————
1.switch语句使用恒等(===)进行比较;
2.浮点数进度为64位float
var z = 0.1 + 0.2; // 结果为0.30000000000000000004
3.JS对象才能使用字符串作为索引,若数组使用字符串作为索引会转为标准对象,数组的方法及属性都不能再使用;
4.JS中,null用于对象,undefined用于变量、属性及方法。若对象未定义,直接通过等式判断存在性会报错,要先用typeOf检测对象:
if (typeof myObj !== "undefined" && myObj !== null) ;
5.一般代码块的作用域都是全局的;

十一、DOM
——————————————————————————
什么是DOM?

十二、this
——————————————————————————
1.方法中指调用this所在方法的对象;
2.函数中指向全局对象;
3.单独使用指向全局(Global)对象,浏览器中,window就是该全局对象;
4.事件中this指向接收事件的的HTML元素;
5.函数对象的apply和call允许切换上下文环境,即this绑定的对象;

十三、let和const
——————————————————————————
1.let声明的变量作用域只存在于let所在的代码块;
2.const声明一个只读常量;

十四、JSON(JavaScript Object Notation)
——————————————————————————
1.JSON用于存储数据格式、服务端想网页传递数据;
2.JSON格式化后为JavaScript对象,因为JSON格式与创建JS对象的代码语法是相同的;
3.JSON语法:①数据为键值对;②数据由逗号分隔;③{}保存对象;④[]保存数组;
4.JSON.parse()将JSON转换为JS对象;JSON.stringify()将JS值转换为JSON;

十五、void
——————————————————————————
1.#包含一个位置信息,默认的锚是#top即网页顶端;
2.href="#+" 跳至页面具体位置;href="javascript:void(0)"表示一个死链接;

十六、异步编程
——————————————————————————
1.耗时长的事件往往用子线程执行,避免影响主线程;
2.JS往往通过回调函数实现异步任务(setTimeout);
3.异步回调还能使用AJAX编程;
4.异步编程还能使用Promise类(多次异步等);
——————————————————————————
参考自runoob.com,侵删。

你可能感兴趣的:(#前端 JS)