JavaScript学习笔记
基本信息:
JavaScript 标准的官方名称:ECMA-262
ECMAScript是JavaScript的标准化版本,由ECMA(欧洲计算机制造商协会)实现。
JS中的七种数据类型:使用了未定义(Undefined)的空(Null)数组(Array)对象(Object)的函数的返回值可以是布尔(Boolean)、数字(Numebr)和字符串(String)
5种数据类型:string number boolean object function
3种对象类型:Object Date Array
2种不包含值的类型:null undefined
typeof操作符可以获取变量的类型
- NaN 的数据类型是 number
- 数组(Array)的数据类型是 object
- 日期(Date)的数据类型为 object
- null 的数据类型是 object
- 未定义变量的数据类型为 undefined
变量都有constructor属性,通过constructor属性可以知道变量的构造函数
全局方法 String() 可以将变量的值转换为字符串
变量的方法 toString() 可以将本身的值转换为字符串
一元运算符+ :可以将变量转换为数字
JS函数中的变量的作用域范围:
一、使用var定义的变量是局部变量,只在函数中有效;
二、未使用var定义的变量是全局变量,可被其它函数使用。
三、函数中定义的全局变量要被函数定义所在位置之前的语句使用,那么必须在该全局变量被调用的语句前的位置声明该函数。
局部变量在函数执行完毕后销毁
全局变量在页面关闭后销毁
在 HTML 中, 全局变量是 window 对象
例如:
myFunction();//先声明函数 document.getElementById("demo").innerHTML = "我可以显示 " + carName;//carName被使用的地方 function myFunction() { carName = "Volvo";//carName定义的地方在其被使用的地方的后面 }
JS函数定义的三种方法:
一、静态方法:function FunctionName(Arguments){statements;[return[value;]]}
二、动态匿名方法:var FunctionName = new Function([Arguments], Statements);
三、直接量方法:FunctionName = function([Arguements]){Statements}
JS正则表达式
匹配模式pattern:/匹配内容的格式/模式修饰符 例如:/e/ 表示匹配字母e,未指定模式修饰符
模式修饰符分三种:i:不区分大小写;g:全局匹配(查找所有匹配项);m:多行匹配;
定义正则表达式的方法:
一、字面量:var 变量名 = /表达式/模式修饰符
二、构造函数:var 变量名 = new RegExp("表达式","模式修饰符")
字符串变量的match()、search()、replace()、split()方法可以使用正则表达式
RegExp对象的test()、exec()、complie()可以使用正则表达式:
var patt = /e/; //定义一个RegExp对象
patt.test("eeefasds"); //调用该实例的test()方法
等价于:/e/.test("eeefasds");
compile()方法主要是改变匹配模式
JS错误处理(Throw、Try和Catch)
try {
adddlert("Welcome guest!");
throw "adddlert未定义";
}
catch(err) {
txt="本页有一个错误。\n\n";
txt+="错误描述:" + err.message + "\n\n";
txt+="点击确定继续。\n\n";
alert(txt);
}
throw可以自定义抛出的错误信息
JS调试
console.log()方法
debugger关键字
JS JSON
JSON 英文全称 JavaScript Object Notation
JSON 语法规则
- 数据为 键/值 对
- 数据由逗号分隔
- 大括号保存对象
- 方括号保存数组
- JSON数组可以含有多个JSON对象
- JSON对象可以包含多个键值对
可以使用 JavaScript 内置函数 JSON.parse() 将字符串转换为 JavaScript 对象
javascript:void(0) 含义
计算一个表达式但是不返回值,void()仅仅是代表不返回任何值,但是括号内的表达式还是要运行
href="https://cn.bing.com#"与href="javascript:void(0)"的区别
href="https://cn.bing.com#"中的#包含了一个位置信息,默认的锚是#top
# 包含了一个位置信息,默认的锚是#top 也就是网页的上端
在页面很长的时候会使用 # 来定位页面的具体位置,格式为:# + 标签的 id
定义一个死链接请使用 javascript:void(0) ;
JS代码规范
变量名推荐驼峰命名法,并尽可能的短,例如:var tableName;
变量名不要以 $ 作为开始标记,会与很多 JavaScript 库冲突
常用运算符后面应该添加空格与后面的变量隔开
代码缩进建议采用4个空格,不建议使用Tab制表符
简单语句的通用规则:
- 一条语句通常以分号作为结束符
复杂语句的通用规则:
- 将左花括号放在第一行的结尾。
- 左花括号前添加一空格。
- 将右花括号独立放在一行。
- 不要以分号结束一个复杂的声明。
对象定义的规则:
- 将左花括号与类名放在同一行。
- 冒号与属性值间有个空格。
- 字符串使用双引号,数字不需要。
- 最后一个属性-值对后面不要添加逗号。
- 将右花括号独立放在一行,并以分号作为结束符号。
实例:
var person = { firstName: "John", lastName: "Doe", age: 50, eyeColor: "blue" };
每行代码字符小于 80
为了便于阅读,建议每行字符数小于 80 个
如果一个 JavaScript 语句超过了 80 个字符,建议在运算符或者逗号后换行。