JavaScript——学习笔记(一)

来源:互联网 发布:如何使用花生壳域名 编辑:程序博客网 时间:2024/06/05 15:24

JavaScript 编程风格

1。区块起首的大括号不要另起一行
这是因为JavaScript会自动添加句末的分号,导致一些难以察觉的错误。
2。圆括号的使用
函数的定义和调用 与左括号之间没有间距
其他情况 前面位置的元素与左括号,都有一个空格
3。结尾分号
由于解释引擎自动添加分号的行为难以预测,因此编写代码的时候不应该省略行尾的分号。
4。变量声明
全局变量,最好把变量声明都放在代码块的头部
函数内部的变量声明,都应该放在函数的头部。
5。相等和严格相等
相等:(==) 严格相等(===)
因为“相等”运算符会自动转化变量类型,造成很多意想不到的情况
因此只是用“严格相等”(===)运算符
6。++   --
建议自增(++) 自减(--)运算符尽量使用+= 和-= 代替
7。避免使用switch…case结构。用对象结构代替

Javascript 函数

函数作用域:
JavaScript只有两种作用域:
一种是全局作用域,变量在整个程序中一直存在,所有的地方都可以读取。
一种是函数作用域,变量只在函数内部存在,在函数内部定义的变量称之为局部变量
变量提升现象 :在函数内 使用var命令声明的变量,不管在什么位置,变量的声明都会被提升到函数体的头部。
                         在函数外声明的变量都是全局变量。
函数本身的作用域是其声明时所在的作用域,与调用时所在作用域无关。
arguments对象
由于javascript允许函数有不定数目的参数,所以需要一种机制。可以在函数体内部读取所有参数
arguments对象包含了函数运行时的所有参数,这个对象只有在函数体内部才可以使用。
闭包
能够读取其他函数内部变量的函数。由于Javascript语言中,只有函数内部的子函数才能读取内部变量,
因此闭包可以简单理解为:定义在函数内部的函数。
本质上,闭包就是将函数内部和外部链接起来的一座桥梁
闭包用处:1读取函数内部的变量,2让这些变量始终保持在内存中 3封装对象的私有属性和私有方法
eval
在JavaScript引擎内部,实际上是一个引用,默认调用一个内部方法。eval的使用分成两种情况
1。eval(expression),叫做直接引用,这种情况eval的作用域就是当前作用域
2。其他的调用方式都叫做间接调用,此时eval的作用域总是全局作用域

JavaScript 正则表达式

新建正则表达式的两种方法
  1. 使用字面量  var regex=/xyz/i;
  2. 使用RegExp构造函数 var regex=new RegExp('xyz',"i");

正则对象的使用方式:
  1. regex.test(string)   返回布尔值,表示当前模式能否匹配参数字符串
  2. string.match(regex)
  3. regex.exec(string) 返回匹配结果,如果发现匹配就返回一个数组,成员是匹配成功的字符串,否则返回null
exec方法返回的数组还包含以下属性:input整个原字符串,index 整个模式匹配成功的开始位置

正则对象的属性:
  1. ignoreCase:返回一个布尔值,表示是否设置 i  修饰符,属性只读 (忽略大小写)
  2. global:返回一个布尔值,表示是否设置 g 修饰符,属性只读    (全局匹配)
  3. multiline:返回一个布尔值,表示是否设置 m 修饰符,属性只读  (多行模式)
  4. lastIndex:返回下一次开始搜索的位置,只在设置 g 修饰符时有意义,属性可读写
  5. source :返回正则表达式的字符串形式,属性只读

exec和match区别
如果正则表达式带有g修饰符,match方法和exec方法行为不同,match方法会一次性返回所有匹配成功的结果。
而exec只返回当前lastindex开始匹配的第一个字符。 此时设置正则表达式的lastIndex属性,对match方法无效,
匹配总是从字符串的第一个字符开始。

字符串对象的正则对象有关的四方法:
match():返回一个数组,成员是所有匹配的子字符串
search():按照给定的正则表达式进行搜索,返回一个整数,表示匹配开始的位置。如果没有任何匹配返回-1
replace():按照给定的正则表达式进行替换,返回替换后的字符串
splite():按照给定的规则进行字符串的分割,返回一个数组,包含分割后的各个成员。

重点内容:

match和search 在正则表达式使用g修饰符后,lastindex无效,都是从字符串的第一个位置开始匹配或搜索。

replace接受两个参数,第一个搜索模式,第二个替换的内容。搜索模式如果不加 g 修饰符,
只替换第一个匹配成功的值,有 g 修饰符,则替换所有匹配成功的值。

repalce的一个应用为,消除字符串收尾两端的空格  str.replace(/^\s+|\s+$/g,'')

replace方法的第二个参数可以使用美元符$,用来只带所替换的内容
$& 指代匹配的子字符串
$` 指代匹配结果前面的文本 ($+反引号)
$' 指代匹配结果后面的文本($+正引号)
$n 指代匹配成功的第n组内容,n是从1开始的自然数
$$ 指代美元符号$

JavaScript JSON对象

JSON.stringify()
该方法用于将一个值转化为字符串,改字符串应该符合Json格式,并且可以被JSON.parse方法还原
如果原始对象中,有一个成员的值是undefined 、函数或xml。这个成员会被忽略,如果数组是undefined
函数或xml对象,则数组里的项被转成null;正则对象会被转化成空对象{}
JSON.stringify()
第一个参数是需要转化成字符串的JSON对象
第二个参数是数组类型,其中指定需要转化的属性。指定之后,只会转化数组中包含的属性。注意只对对象的属性有效
第二个参数是函数,用来更改JSON.stringify的默认行为。函数接收两个参数,分别是被传对象的键名和键值。这个处理函数是递归处理所有的键并返回对应的值。
第三个参数,用于增加返回的JSON字符串的可读性,可以是数值也可以是字符串。数字表示在属性前面添加的空格个数(不超过十个)
字符串表示在属性前面添加的字符串(不超过十个)
toJSON
如果JSON.stringify的参数对象有自定义的toJSON方法,那么JSON.stringify会使用这个方法返回的值做为参数,而忽略对象的其他属性。因此可以自定义json对象的toJSON方法,获得自定义的json对象到字符串的转化方法
JSON.parse
用于将JSON字符串转化为对象
如果json字符串不符合JSON格式,就会报错,可以将JSON.parse方法放到try……catch代码块中
第一个参数为JSON字符串
第二参数可接受一个处理函数,用法和JSON.stringify一致

JavaScript Console对象

console.log
该方法用于在console窗口输出信息,它可以接收多个参数,将他们的结果链接起来输出
该方法在输出的结尾自动添加换行符
该方法支持格式占位符,用后面的参数来替换格式占位符再输出
console.log支持以下占位符:
  ● %s 字符串  
  ● %d  整数  如果给定的值是浮点数,向下取整
  ● %i   整数   如果给定的值是浮点数,向下取整
  ● %f   浮点数
  ● %o  对象     显示该对象的值
  ● %c  css格式字符串   例如:‘color: red; background: yellow; font-size: 24px;’用来对输出的内容进行渲染
console.info 和 console.debug
console.info  和 console.debug 都是console.log的别名,用法完全一样。info输出的信息前面加一个蓝色的图标。
console.warn 和 console.error
warn方法输出信息时,在最前面加一个黄色三角,表示警告
error方法输出信息时,在前面加一个红色的叉,表示出错,同时会显示错误发生的堆栈
console.table 
对于某些复合数据,可以转化为表格显示
var languages = [
  { name: "JavaScript", fileExtension: ".js" },
  { name: "TypeScript", fileExtension: ".ts" },
  { name: "CoffeeScript", fileExtension: ".coffee" }
];
console.table(languages);
复合数据转化为表格显示的条件是,必须拥有主键。对于数组来说,主键就是数字键,对于对象来说,主键就是他的最外层键。
console.count()
用于计数,输出被调用的次数
可接受一个字符串的参数,作为标签,对执行的次数进行分类
console.dir 和 console.dirxml
用于输出DOM元素
console.assert(exp,string)
assert方法接收两个参数,第一个参数是表达式,第二个参数是字符串,只有当第一个参数为false,才会输出第二个参数,否则不会有任何结果。
console.time() console.timeEnd
这两个方法用于计时,可以算出一个操作所花费的准确时间。
接收一个字符串参数,来定义计时器的名称
console.group console.groupEnd  console.groupCollapsed

用于将显示的信息分组,分在一组的信息,可以用鼠标折叠、展开
console.trace console.clear
trace方法显示当前执行的代码在堆栈中的调用路径
clear方法用于清除当前控制台的所有输出









0 0