地铁图
- 从左边界开始,沿着轨道向右
- 沿途,圆框中的是字面量,方块中的是规则或描述
- 能够沿着轨道走通的是合法的
- 走不通的不合法
- 末端只有一条竖线的铁路图,表示允许在任意一对符号中插入空白.而两条竖线的则不允许
空白
格式化的字符或注释叫空白
- space,tab,line end,//,/**/
- 没用的注释比没注释更糟糕
- 尽量不要使用/**/注释
标识符
- 字母开头,由数字,字母和_组成
- 不能是保留字
数字
- 只有一个64位的浮点数
- 没有整型,所以1和1.0是一样的
- 数字字面量中包含指数部分,则其值等于e之前的数字*10的e之后的数字的次方,如1e2 是100,2e3是2000
- 负数由前置运算符-构成
- NaN是数值,表示不能产生正常结果的运算结果
- Infinity表示所有大于1.79769313486231570e+308的值
- 数字拥有方法,比如tofixed等
- Math对象包含一套操作数字的方法
字符串
- 由单引号或双引号构成,包含0或多个字符
- \是转义字符
- 所有字符都是16位的
- \u用来指定数字字符的编码..
- "A"="\u0041" \u表示unicode编码 0041是16进制的字符表示方法
- 参考:blog.csdn.net/java2009cgh…
- 字符串有一个length属性
- 字符串是不可变的.可以通过+来连接其他字符串,var a = "1";var b = a;b+="2";a为1,b为12
- 字符串拥有方法,比如toUpperCase()
语句
- 每个
<script>
标签提供一个编译单元,每个编译单元包含一组可执行的语句 - 当var语句被用在函数内部,是定义的变量是该函数的私有变量,
- switch,while,for,do语句允许有一个label前置标签,配合break使用.有类似于c#中的goto语句.尽量少用
var num=0;
outermost:
for(var i=0;i<10;i++){
for(var j=0;j<10;j++){
if(i==5&&j==5){
break outermost;
}
num++;
}
}
- 正常是从上到下执行
- 通过条件语句if,switch,循环语句while,for,do,强制中转语句break,return,throw和函数调用来改变执行顺序
- 代码块包含在花括号里面.因为js里面的代码块不会创建新的作用域,所以变量应该被字义在函数的头部
- 像C#的话,i是无法被访问到的,js却可以访问.
- 如果想要实现局部变量,只能通过函数来实现.函数还是有作用域的.只是花括号没有作用域而已
for(var i = 0;i<10;i++){}
console.log(i);
- if判断时flase,null,0,'',nudefined,NaN被认定为假,其余余部是真
- switch多分支,记得用break和default
- while
- for,初始化从句+条件从句+增量从句...有一个好玩的例子
for(var a=1024,b=568795,b>1,b=b/a;)
- for in,注意避免循环出从原型链中继承来的属性
- do和while一样
- try catch throw
- 如果throw在try中,那么会进入这个try的catch
- throw的表达式一般是一个对象字面量,包含name属性和message属性
try {
try {
console.log(a)
} catch (e) {
throw {
name: "sss",
message: "xxx"
}
}
} catch (e) {
console.log(e)
}
- return如果不带返回值,则返回值是undefined
- break退出一个循环或switch,可以配合标签使用
- 一个表达式可以给一个或多个变量或成员赋值,如a=b=c=5+6;
- 一个表达式可以给一个或多个变量或成员调用方法
- 一个表达式可以给一个或多个变量或成员从对象中删除一个属性 这两条没有看懂
- +=作加法运算或连接字符串
表达式
- 最简单的表达式是字面量值(比如"",3),变量(如a),内置的值(false,NaN)
- 以new开头的调用表达式
- 以delete开头的属性提取表达式
- 包在圆括号中的表达式
- 以一个前置运算符作为前导的表达式,或..........
- 一个中置运算符与另一个表达式 不懂
- 一个函数调用 trim()
- 一个属性提取表达式 "xxx".length
- 三元运算符?后面跟着另一个表达式,然后接一个:,然后再接第3个表达式 ""===" "?1:2
这个中置表达式应该是翻译上的问题,可能翻译成其他的会更多吧.其实就是指的for in中的in,switch case里面的case这一类运算符
运算符的优先级.....
typeof产生的值有
-
number
-
string
-
boolean
-
undefined
-
function
-
object
- 如果运算符是数组或Null,结果也是object
-
&&第一个为假,则取第1个
-
||第一个为真,则取第1个
-
函数调用运算符()...这个明白了就好办了
-
属性提取运算符[],....这个明白也了就清晰多了
字面量
- 字面量是一种按照指定规则创建新....新啥子呢的表示法
- 如/xxx/是正则
- 'xxx'是字符串
- 对象字面量{var:'xxx'}属性名可以是标识符,但是标识符无法以.进行提取
- 数组字面量[xxx]
函数
- 函数字面量,可以有名字,参数,主体
- function
- 要注意形参和实参的区别
复习感
真觉得当时的笔记做的好混乱,完全是照抄.没有清晰的结构,只是不停的记录一个又一个的知识点,不过都有一个阶段吧,如果才开始就知道先整体再细节的学习方法,也不会有今天的冉娃娃了.
不过关于运算符这个,记忆还是特别新的.以前只知道()
是执行方法.
是获取属性值,经他这么一讲,哦,原来这两个是运算符啊.
再就是感慨作者真是TMD牛逼.所有的基础语法,居然只花了10多页就讲完了,后来看犀牛书哎呀我去,简直折磨人.只可惜那个铁道图始终看着有点头大,要不整个基础语法部分,只需要保留这几张图就ok了.