<script type="text/javascript">
//直接量,程序中直接使用的数据值
"helloworld";
//匿名函数
window.setTimeout(function(){console.log('hello world')},1000);
</script>
<script type="text/javascript">
//JS没有块级作用域
for (var i = 0; i < 5; i++) {
console.log(i);
}
console.log(i);
</script>
<script type="text/javascript">
//函数里面的变量是局部变量
function go () {
var a=0;
console.log(a);
}
go();
console.log(a);
</script>
<script type="text/javascript">
//全局作用域
//最外层定义的变量
var name="tom";
//最外层定义的函数
function sayHello () {
console.log("hello");
}
//window对象拥有全局作用域
window.alert(window.location);
//提升过的变量和函数
function say () {
str="hello";
}
say();
console.log(str);
</script>
<script type="text/javascript">
//作用域内的提升
console.log(test);
var test=1;
//相当于
var test;
console.log(test);
test=1;
//跨作用域的提升
function say () {
str="hello";
}
say();
console.log(str);
//相当于
var str;
function say () {
str="hello";
}
say();
console.log(str);
//函数提升
go();
function go () {
console.log('hello')
}
//相当于
function go () {
console.log('hello')
}
go();
//函数表达式不会提升
to();
var to=function(){
console.log('to');
}
</script>
<script type="text/javascript">
function foo(){
var a = 2;
function bar(){
console.log(a); //2
}
return bar;
}
foo()();
//简化为
function foo(){
var a = 2;
return function(){
console.log(a);//2
}
}
foo()();
</script>
<script type="text/javascript">
// 最常用的两种写法
(function(){
/*代码*/
}());
//或者
(function(){
/* 代码 */
})();
</script>