Javascript基础
来源:互联网 发布:软考程序员内容 编辑:程序博客网 时间:2024/05/22 14:38
1. Js没有块级作用域,只有函数作用域,函数是Js中唯一有自己作用域的数据结构。
例:
function test() {
for(var i; i<5; i++){
//块内
}
console.log(i)
}
test(); //结果输出 5,说明js没有块级作用域。
补充:如果想让Js拥有自己的块级作用域,可利用函数作用域的机制,改为:
function test() {
(function(){
for(var i; i<5; i++){
//块内
}
})();
console.log(i)
}
test();//结果为undifined,这时变量“i”的作用域在立即执行函数内,在出了自己的作用域后就被销毁,所以此时的log结果为undifined2. Js在作用域内变量声明具有提升机制(hoisting)。
例:
<script>
var a = "hello";
(function(){
console.log(a);
var a = "world";
})();
</script>
//结果输出 undifined,因为在上面的立即执行函数的作用域内声明的“a”变量被提升到了自己作用域的顶部,相当于:
<script>
var a = "hello";
(function(){
var a;//变量提升
console.log(a);
a = "world";
})();
</script>
所以结果在函数内"a"变量的声明被提到了最前面,在复制前log,所以结果为undifined。
3. Js中没有用var声明的变量都是全局变量,而且是顶层对象的属性。
例:
function test (flag) {
if(flag){
s=''scope';
for(var i=0; i<2; i++){}
}
console.log(i)
}
test(true);
console.log(s);
//输出 2; "scope"; 变量"s"声明的时候没有用var,所以为全局变量,用window.s也能获取到。
- javaScript基础
- JAVASCRIPT 基础
- JavaScript基础
- JAVASCRIPT基础
- JavaScript 基础
- javascript基础
- javascript基础
- JavaScript 基础
- JavaScript基础
- javascript基础
- JavaScript基础
- javascript基础
- javascript基础
- Javascript基础
- JavaScript基础
- JavaScript基础
- javascript基础
- javascript基础
- Unity5中优化VR 应用的12个技巧
- FileZilla FTP Server在win2008安装及防火墙设置
- Python练习小案例
- PHP Warning: PHP Startup: redis: Unable to initialize module
- 数据库的表连接方式详解
- Javascript基础
- ubuntu 下使用Anaconda3 出现conda:未找到命令
- eclipse 里直接运行代码
- fluent python读书笔记
- 基于layer.js收货地址弹框选择,然后返回相应的地址信息
- 对recyclerview的简单封装
- bootstrap学习15---辅助类2
- androidStudio出现Executing tasks: [:app:assembleDebug]等错误不能运行程序
- YII2___ActiveForm组件使用