2.2 变量和常量
2.2.1 常量
在程序运行中保持不变的数据
2.2.2 变量
命名 字母或者下划线开头,中间可以是数字、字母或者下划线
不能包含空格 加号 减号 不能使用关键字 严格区分大小写
声明赋值
只是声明变量,并未对其赋值,则默认为undefined。
var可以多次声明同一个变量,如果该变量已经有一个初始值,那么此时相当于重新赋值。
作用域 全局变量和局部变量 全局声明在方法外部
生存周期 全局变量在主程序定义,一直到程序结束,局部变量只在函数之中,函数结束后,生存期结束。
2.2.3 运算符
typeof 返回操作数当前所容纳的数据类型
new 创建对象 new constructor [(arguments)]
constructor 必选项
arguments 可选项
2.3 数据类型转换
转化为数值类型数据
类型 | 转换后结果 |
---|---|
undefined | NaN |
null | 0 |
逻辑型 | false 0 true 1 |
字符串 | 内容是数字 则为数字 否则NaN |
其他对象 | NaN |
转化为字符型
类型 | 转化后的结果 |
---|---|
undefined | "undefined" |
null | "null" |
逻辑 | "false" "true" |
其他对象 | 若存在 为toString()方法的值 否则结果为"undefined" |
(流程控制 跳过)
3 函数
3.1超链接调用函数
javascript:test()"
3.2嵌套函数
<script type="text/javascript">
var outer = 10
function outFunction(number1,number2){
function innerFunction(){
alert(number1+number2+outer);
}
return innerFunction();
}
</script>
</head>
<body>
<script type="text/javascript">
outFunction(10,10);
</script>
</body>
内部函数可以访问到 全局变量和外部函数的形参
Maximum call stack size exceeded 报错
在return innerFunction 写错 return outFunction 无终止递归
js闭包 访问其他函数局部变量 可以使这些局部变量始终保持在内存中(有点类似于全局变量)
http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html
function f1(){
var n=999;
nAdd=function(){n+=1}
function f2(){
alert(n);
}
return f2;
}
var result=f1();
result(); // 999
nAdd();
result(); // 1000
第二次执行 reslut 的时候 不是重新定义变量n为 999