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 个字符,建议在运算符或者逗号后换行。