js代码执行顺序与作用域
来源:互联网 发布:js 控件显示隐藏 编辑:程序博客网 时间:2024/06/15 02:04
1、简单程序流程
<script> say(content); function say(something) { console.log(something); } var content = '你好';</script>
//页面加载时声明前置,content先被声明,然后执行say();此时content并未被赋值,所以结果为default。
2、js作用域
<script> function demo() { if(true) { var i = 200; } console.log(i); //js没有块级作用域,js只以函数划分作用域. } demo();</script>
①Js没有块级作用域 ②Js只通过函数划分作用域
对于这个程序,只有一个作用域讲就是demo函数,所以console.log可以调用i的值。
3、隐式声明
<script> function say() { var x = 200; function inner() { y = 100; //隐式声明的变量会自动提升为全局变量,所以在声明变量的过程中一定要注意,不要声明隐式变量 console.log(x); } inner(); console.log(y); } say(); console.log(y);</script>执行y=100这行代码时,程序会从内向外去搜索y这个变量,最后没有找到,就会在window对象下创建这个变量,所以可以被全局调用,为全局变量。
4、同名变量
<script> function say() { var str1 = 'hello'; function inner() { var str1 = 'world'; console.log(str1); //同名变量,在不同作用域,是两个不同的变量. } inner(); console.log(str1); } say();</script><script> function say() { var str1 = 'hello'; var str1 = 'world'; //同名变量,在同一作用域,下面的会覆盖上面的 console.log(str1); } say();</script>一开始将console.log(str1)放在了say();下面,导致不能打印,错误在于函数外部不能访问函数内部。
5、函数中声明的变量在整个函数中都有定义
<script>function demo() {var x = 12;function inner() {x = 200;} inner(); console.log(x);}demo();console.log(x);</script><script> function demo() { console.log(x); //函数中声明的变量在整个函数中都有定义。声明前置. var x = 200; console.log(x); } demo();</script>①一开始认为第一个打印应该为12,错,因为里面那个函数将x重新赋值为200,再执行的打印操作。②第一个打印开始的时候只是声明已经执行,还没有赋值,所以是default。
6、基本数据类型(布尔,string,number,null,default)和引用数据类型object
<script>var str = 2;var str2 = str; //基本数据类型的赋值,其实就是复制了一份值str = 200;console.log(str2);</script><script> var people = { name: '张三', age: 20 }; var people2 = people; // people = { //这个people原来的引用被切断,开辟了一个新的内存空间.赋了新的地址. // name: '周勇', // age: 25 // }; people.name = '李四'; //引用数据类型的赋值,本质上是赋的地址. people.age = 25; console.log(people2.name); console.log(people2.age);</script>①var str2 = str这行代码与var str2 = 2代码等价,所以只为赋值。②people.name这个格式的写法才指向之前people的地址,即赋给people2的地址,而//里的写法为开辟一个新的地址,这个地址并没有赋给people2。
区分引用数据类型和基本数据类型是看声明的时候有没有{ }.
0 0
- js代码执行顺序与作用域
- js代码 执行顺序
- Jmeter组件执行顺序与作用域
- Jmeter组件执行顺序与作用域
- Jmeter组件执行顺序与作用域
- JMeter组件执行顺序与作用域
- Jmeter组件执行顺序与作用域
- Jmeter组件执行顺序与作用域
- Jmeter组件执行顺序与作用域
- js代码的执行顺序
- JS:代码执行顺序问题
- JS执行环境与作用域
- JS执行环境与作用域
- js 激活/代码执行阶段 执行顺序!
- JMeter基础之--元件的作用域与执行顺序
- jmeter元件的执行顺序与作用域
- JMeter基础之--元件的作用域与执行顺序
- Jmeter基础(一)---元件作用域与执行顺序
- java 图片裁剪
- leetcode 139. Word Break
- 如何用约束在scrollView中开启paging并添加多张图片,一个图片一个page
- HDOJ 1848 Fibonacci again and again
- cocoa pods 之 遇到 Updating local specs repositories
- js代码执行顺序与作用域
- codeforces 651C. Watchmen(排列,去重)
- iOS uiwebview 大小跟随内容自适应
- php处理字符串
- PAT basic 1041
- JNI分线程在Android上绘图刷新过快容易崩溃的处理
- LeetCode----Lowest Common Ancestor of a Binary Search Tree
- 怎样羽化和锐化Zbrush遮罩边界
- ios之摇一摇