Javascript标准参考教程(阮一峰)笔记总结---语法篇

来源:互联网 发布:淘宝乔丹是真的吗 编辑:程序博客网 时间:2024/04/29 20:36
(1)基本语法
标识符
1、标识符(identifier)是用来识别具体对象的一个名称。最常见的标识符就是变量 名,以及后面要提到的函数名
2、第一个字符,可以是任意Unicode字母(包括英文字母和其他语言的字母);
3、中文是合法的标识符,可以用作变量名。
注释
1、<!--和-->也被视为单行注释
注意:需要注意的是,-->只有在行首,才会被当成单行注释,否则就是一个运算符
x=1;<!--x=2;
-->x=3;
不是在开头:n --> 0实际上会当作n-- > 0,因此输出2、1、0。
区块
1、JavaScript使用大括号,将多个相关的语句组合在一起,称为“区块”(block)。
2、单独使用的区块在JavaScript中意义不大,很少出现。区块往往用来构成其他更复杂的语法结构
{vara=1;}
语句
1、常量不能被赋值 2=a;//false
2、while (expression)statement;//statement一条语 句,可以省略大括号,if语句也是一样
3、while语句后面的分号不能省略;
4、label 标记,配合break 跳出指定的循环,也可以配合continue跳过某次循环
top:
if(i==1) break top;
(2)数据类型转换
强制转换
1、Number(null)// 0
Number('\t\v\r12.34\n')// 12.34
Number({})// NaN 不是报错
String(null)// "null"
2、对象的 valueOf方法返回对象本身
toString方法先于valueOf方法执行
如果调用的需要是值,就调用valueOf,如果调用的是字符串,则调用toString
3、
Boolean({ })// true  
Boolean([ ])// true 
Boolean(new Boolean(false))// true
所有对象(包括空对象)的转换结果都是true
(3)错误处理机制
Error对象(7种)
1、JavaScript原生提供一个Error构造函数,所有抛出的错误都是这个构造函数的实例。
varerr=new Error('出错了');
err.message// "出错了"
根据语言标准,Error对象的实例必须有message属性,表示出错时的提示信息,其他属性则没有提及
message:错误提示信息
name:错误名称(非标准属性)
stack:错误的堆栈(非标准属性)
2、RangeError是当一个值超出有效范围时发生的错误
1)数组长度为负数。
2)Number对象的方法参数超出范围,一级函数堆栈超过最大值
throw
1、throw语句的作用是中断程序执行,抛出一个意外或错误。它接受一个表达式作为参数,可以抛出各种值, 如 throw 'Error'
try catch


catch中还可以加入判断语句,判断不同的错误类型
(goto语句是c语言中无条件的转移语句)
finally代码块
1、try...catch结构允许在最后添加一个finally代码块,表示不管是否出现错误,都必需在最后运行的语句。
2、右边没有catch语句块,所以错误没用捕获,执行后finally再执行return,return下面的代码不再执行,如果finally中也有个return,
则会覆盖try中的return。尽管return在finally前面
3、





(3)函数
函数表达式
1、函数表达式需要在末尾加上分号
2、加上函数名有两个用法:
一是可以在函数体内部调用自身,
二是方便除错(除错工具显示函数调用栈时,将显示函数名,而不再显示这里是一个匿名函数)(看不懂。。。。)

Function构造函数
1、不论你传几个参数,最后一个参数作为函数体。

2、可以不使用new,返回结果一样,
3,不直观,几乎无人使用



函数的属性和方法
1、属性
length:表示函数定义之中参数的个数,调用不管输入多少个参数,都不变,length只反应预期传入的参数个数。
toString:返回函数的源码(整个函数,内部的注释都会被返回);
2、
1)如果参数是原始类型的值(数值、字符串、布尔值):
参数的传递方式是值传递。即修改参数的值,不影响外部的值;
2)如果参数是复合类型的值(数组、对象、其他函数):传递方式为址传递




注意,如果函数内部修改
的,不是参数对象的某个属性,
而是替换掉整个参数,这时不会
影响到原始值。(如右图)这是
因为,形式参数(o)与实际参
数obj存在一个赋值关系。

3、同名参数,取最后出现的值

argumentes对象
1、argumentes对象可以在运行时修改。但是在严格模式下只读,修改是无效的,但是不会报错
varargs=Array.prototype.slice.call(arguments);
Array.prototype.concat.apply([1,2,3],arguments)
让argumentes使用数组的方法,或者用循环,将其变为数组
2、可以通过arguments.callee()调用函数自身,严格模式下无效

闭包
1、读取函数内部的变量;(内部数据被return出来)
2、让这些变量始终保持在内存中,即闭包可以使得他诞生环境一直存在。
有属性和私有方法

3、用处
封装对象的私

立即调用函数表达式(IIFE)
1、读取函数内部的变量;(内部数据被return出来)
function(){/* code */ }();//出错
因为:function这个关键字即可以当作语句,也可以当作表达式。
// 语句
functionf() {}
// 表达式
varf=functionf() {}
所以Javascript引擎规定,function关键字出现在行首,解释为语句;
所以将语句放入()中,让引擎将其理解成一个表达式;
所以有很多中写法,前面加+,~,都行
包括new 关键字也能达到效果(只有传递参数是才需要后面的小括号)
(function(){/* code */ }());
// 或者(function(){/* code */ })();
上面两种方法都可以,但是必须以分号结尾,不然可能会报错

2、目的
1)量一是不必为函数命名,避免了污染全局变
2)内部形成了一个单独的作用域,可以封装一些外部无法读取的私有变量。
eval命令
1、没有自己的作用域,都是在当前作用域下进行的。所以会影响到eval外部的变量。因此严格模式下(有时仍可以修改,有时有用,有时无效),修改,定义变量都不影响外部的作用域,但是依然可以访问外部。
var e = eval; e.("a=2") //这是间接调用,它的作用域为全局作用域,
eval("a=2")//这是当前作用域
         

(4)数值
整数和浮点数
1、javascript所有数字都是以64位浮点数形式储存
1===1.0// true
2、自动用科学计数法,小数点前面数字多于21位,或者后面的0多于5位

数值的进制

前导0后面有数字8和9,则该数值被视为十进制。
特殊数值
1、+0和-0在作为分母时是不一样的
2、isNaN(['xzy'])// true
// 等同于
isNaN(Number(['xzy']))// true

计算的时候先是先转化为数值,所以右式成立,isNAN(null) //true,null被转化为0

                        
3、正向溢出(overflow)、负向溢出(underflow)
4、isFinite函数返回一个布尔值,检查某个值是不是正常数值
如“isFinite(-1) //true
(5)对象
概述
1、对象所有键名都是字符串,如果格式不符合标识符的条件,必须加引号
2、如果不同的变量名指向同一个对象,那么它们都是这个对象的引用,也就是说指向同一个内存地址
3、{foo:123}是语句还是表达式和IFFE是一样的分类

delete
1、delete o.p 删除对象的属性 ,无论是否存在都返回true,但是如果对象设置了configurable:false 属性后,表示不可操作。返回false;
2、delete 只能删除对象本身的属性,无法删除继承的属性。但返回true
3、delete不能删除var 命令声明的变量
in
1、'p' in o o中是否存在键名p true



2、in 不能识别是本身的属性还是继承的,但是hasOwnProperty可以判断
for...in
1、用来遍历一个对象的全部属性,
2、遍历的都是enumerable(可枚举)的属性,
3、它不仅遍历对象的自身的属性,还遍历继承的属性
4、对象还有toString属性,但是它默认是不可枚举的
with
1、弊端是绑定对象不明确:





3、with 可以替换模版变量
2、with内部的变量必须是对象已经存在的属性(如没有,就先设置,再使用with),否则创建的是当前作用域的全局变量,这是以为with区块没用改变作用域
(6)数据类型
概述
1、6种数据类型,ES6中加了symbol类型
 
2、null 空值;undefined未定义
3、&&也叫两元逻辑运算符
!a 也叫前置逻辑运算符


阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 一年级语文成绩差怎么办 一年级小孩成绩差怎么办 一年级小孩基础差怎么办 一年级小孩语文差怎么办 一年级小孩数学差怎么办 一年级小孩理解能力差怎么办 一年级小孩作文差怎么办 一年级小孩记忆力差怎么办 孩子的记忆力不好怎么办 孩子记忆力不好怎么办呢 小学三年级学生不听话怎么办 司法考试成绩单没打印怎么办 高一200分怎么办 初一孩子语文差怎么办 大学专业没选好怎么办 减肥口渴的厉害怎么办 开胸手术后胸闷气短怎么办 打游戏上网成瘾怎么办 老公打游戏成瘾怎么办 我老是沉迷游戏怎么办 18孩子沉迷游戏怎么办 志愿提交码丢失怎么办 幼儿园报名没进怎么办 考完教师资格证怎么办 两套房改房怎么办 cad打开无响应怎么办 高中生脸上痘痘怎么办 孩子玩心太大怎么办 开会听不懂讲什么怎么办 在国外玩手游老是进不去怎么办 广东普法考试不合格怎么办 尔雅考试错过了怎么办 大四考试错过了怎么办 电大考试错过了怎么办 吃了桂圆咳嗽怎么办 初中生游戏网瘾怎么办 孩子染上网瘾怎么办 郑州孩子厌学有网瘾怎么办 孩子网瘾严重怎么办 学生上课玩手机怎么办 老脱发怎么办才好