今天开学重新开始再看一遍红宝书,上学期看了一遍没看懂(尴尬。。),重新开始仔细梳理了一下,写一下今天的感悟。
1.var声明的变量会自动被添加到最接近的环境中
function add (num1,num2) { var sum = num1 + num2; return sum; } alert(sum);// sum不是有效的变量,无效会导致错误 function add (num1,num2) { sum = num1 + num2; return sum; } alert(sum);// sum有效
2.Ecmascript定义了六种数据类型,包括五种简单数据类型(null,number,string,undefined,boolean)和一种复杂数据类型(object)
3.null数据类型为object
4.var声明变量但为初始化,其值为undefined;
var a; alert(a == undefined);//true
5.Ecmascript中单引号和双引号没什么区别
6.将某个值转换为字符串
var a = 11; typeof a;//number var s=""+a; typeof s;//string
7.逗号操作符还可以用于赋值,在用于赋值时,逗号操作符总会返回表达式的最后一项
var num=(1,2,3,4); num;//4
8.我们不能给基本类型添加属性(除object)
var name="sun"; name.age=21; alert(name.age)//undefined;
9.对象是按值传递的
function setname(obj){ obj.name = "sun"; obj = new Object(); obj.name = "che"; } var person = new Object(); setname(person); alert(person.name)//sun
10.if语句的变量声明会将变量添加到当前的执行环境
if(true){ var color="blue"; } alert(color);//blue
11.简单排序功能
var a = [0,1,5,2,10,15]; function b(v1,v2){ return v2-v1; } b.sort(a);//15,10,5,2,1,0
12.Ecmascript操作数组有迭代方法(every,filter,foreach,map,some..),转换方法(toString,valueOf..),栈方法(pop,push(后进先出)),队列方法(push,shift(先进先出)),重排序方法(reverse,sort..),操作方法(concat..slice,splice),位置方法(indexOf,lastIndexOf..),归并方法(reduce..)(还真是多。。)
13.date类型方法太多太繁杂,用的时候再翻吧。。
14.function类型没有重载,出现了同名函数,后面的覆盖前面的函数,在函数内部有两个特殊的对象:arguements和this(重点理解,过两天专门写一个详解this,重点理解下)
15.call,apply,bind真正增强大的地方是能扩充函数赖以生存的作用域
16.charCodeAt()这个方法很好玩,返回函数的字符编码。