| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> Web前端基础—JavaScript基础(作用域、预解析、对象和内置对象) -> 正文阅读 |
|
[JavaScript知识库]Web前端基础—JavaScript基础(作用域、预解析、对象和内置对象) |
作用域
1.1作用域概述 通常来说,一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突。 简单来说:作用域就是代码名字(变量)在某个范围内起作用和效果。 目的是:为了提高程序的可靠性,更重要的是减少命名冲突。 1.2js的作用域(es6之前版本)
全局作用域不会影响局部作用域
2.1变量作用域的分类 在JavaScript中,根据作用域的不同,变量可分为两种:
全局变量在全局下都可以使用,也可以在局部变量中使用。 注意: 如果在函数内部 没有声明直接赋值的变量也属于全局变量 局部变量不能在函数以外使用。 注意: 函数的形参也可以看作是局部变量 2.2从执行效率来看全局变量和局部变量
只要是代码,就至少有一个作用域 写在函数内部的局部作用域 如果函数中还有函数,那么在这个作用域中就又可以诞生一个作用域 根据在内部函数可以访问外部函数变量的这种机制,用链式查找决定哪写数据能被内部函数访问,就称为作用域链。—就近原则 预解析
JavaScript代码是由浏览器中的JavaScript解析器来解析的。JavaScript解析器在运行JavaScript代码的时候,分为两步:预解析和代码执行。 预解析:js引擎会把js里面的 var 还有function 提升到当前作用域的最前面; 预解析分为:变量预解析(变量提升)和函数预解析(函数提升) 变量提升:就是把所有的变量声明提升到当前的作用域最前面 ?不提升赋值操作。 函数提升:就是把所有的函数声明提升到当前作用域的最前面,不调用函数 代码执行:按照代码书写顺序从上往下执行。
? f1(); ????????console.log(c); ????????console.log(b); ????????console.log(a); ????????function?f1()?{ ????????????var?a?=?b?=?c?=?9; ????????????console.log(a); ????????????console.log(b); ????????????console.log(c); ????????} ????????//?相当于执行以下代码 ????????//?function?f1()?{ ????????//?????var?a; ????????//?????a?=?b?=?c?=?9; ????????//?????//?相当于?var??a??=?9;?b?=?9;?c?=?9;?b?和?c?直接赋值?没有var?声明?当?全局变量看 ????????//?????//?集体声明??var?a?=?9,?b?=?9,?c?=?9; ????????//?????console.log(a); ????????//?????console.log(b); ????????//?????console.log(c); ????????//?} ????????//?f1(); ????????//?console.log(c); ????????//?console.log(b); ????????//?console.log(a); JavaScript 对象
1.1什么是对象? 现实生活中:万物皆对象,对象是一个具体的事务,看的见摸得着的实物。例如:一本书、一辆汽车、一个人可以是“对象”,一个数据库、一张网页、一个与远程服务器 的连接也可以是“对象”。 在JavaScript中,对象是一组无序的相关属性和方法的集合,所有的事务都是对象,例如:字符串、数组、数值、函数等。 对象是由属性和方法组成的。
1.2为什么需要对象? 保存一个值时,可以使用变量,保存多个值(一组值)时,可以使用数组。如果要保存一个人的完整信息呢?
2.1利用字面量创建对象 对象字面量:就是花括号{}里面包含了表达这个具体事物(对象)的属性和方法。 ? ar?obj?=?{ ????????????//属性 ????????????uname:?'张三丰', ????????????agr:?18, ????????????aex:?'男', ????????????//方法 ????????????sayHi:?function()?{ ????????????????console.log('hi~'); ????????????} ????????};
(键) ?属性名 : (值) ?属性值
2.2使用对象 (1)调用对象的属性 我们采取 ??对象名.属性名 ?? console.log(obj.uname); (2)调用对象还有一种方法: 对象名[‘属性名’] console.log(obj['age']); (3)调用对象的方法 ??对象名.方法名 obj.sayHi(); 2.3利用 new Object创建对象 var?obj?=?new?Object();?//创建一个空的对象 ????????//通过追加属性的方式??添加 ????????obj.uname?=?'张三丰'; ????????obj.age?=?18; ????????obj.sex?=?'男'; ????????obj.sayHi?=?function()?{ ????????????console.log('hi~'); ????????}
2.4利用 构造函数?创建对象 我们可以利用函数的方法,重复执行相同的代码,我们就把这个函数称为构造函数。 构造函数就是把我们对象里面一些相同的属性和方法抽象出来,封装到函数里面。
???????????function?Start(uname,?age,?sex)?{ ????????????this.name?=?uname; ????????????this.age?=?age; ????????????this.sex?=?sex; ????????} ????????var?se?=?new?Start('刘德华',?18,?'男');?//调用函数返回的是一个对象 ????????console.log(se.name);
for...in语句用于对数组或对象的属性进行循环操作。
for(变量 in 对象){ //直接输出变量 ??得到的是 ?属性名 //对象[变量名] ?得到的是 ?属性值 } ?在使用for...in语句时,里面的变量 ?我们喜欢写 k 或者 key
对象可以让代码结构更清晰; 对象是复杂数据类型object; 本质:对象就是一组无序的相关属性和方法的集合; 构造函数泛指一大类,比如苹果,不管是红苹果还是绿色苹果,都统称为苹果; 对象实例是特指一个事务; for...in语句用于对对象的属性进行循环操作。 JavaScript 内置对象
JavaScript中的对象分为3种:自定义对象、内置对象、浏览器对象。 内置对象就是指JS语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或是最基本的而必要的功能(属性和方法) 内置对象最大的优点就是帮助我们快速开发 JavaScript提供了多个内置对象:Math、Data、Array、String等
|
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年4日历 | -2025/4/19 8:51:14- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |