IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> JavaScript自学笔记(三) -> 正文阅读

[JavaScript知识库]JavaScript自学笔记(三)

学习链接:https://www.bilibili.com/video/BV1Sy4y1C7ha
JavaScript基础语法-dom-bom-js-es6新语法-jQuery-数据可视化echarts黑马pink老师前端入门基础视频教程?

笔记涉及的是视频p135~p155的内容,涉及js的作用域、预解析和对象的知识

目录

1. js作用域

? ? ? ? 1.1 全局作用域

? ? ? ? 1.2 局部作用域

? ? ? ? 1.3 变量的作用域

? ? ? ? 1.4 作用域链

2. js预解析

? ? ? ? ?2.1 js引擎运行步骤:

? ? ? ? ?2.2 预解析

3. js对象

? ? ? ? ?3.1 创建对象的三种方法

? ? ? ? ?3.2 使用对象的方法

? ? ? ? ?3.3 变量、属性、函数、方法的区别

? ? ? ? ?3.4 遍历对象


?

1. js作用域

? ? ? ? 作用域是限定一段程序代码中的名字的可用性的代码范围,作用域目的是为了提高程序可靠性并且可以减少命名冲突;在同一个作用域内不能引起命名冲突

? ? ? ? 1.1 全局作用域

? ? ? ? ? ? ? ? 整个<script></script>标签/单独js文件

? ? ? ? 1.2 局部作用域

? ? ? ? ? ? ? ? 代码名字仅在在函数内部起效果作用

? ? ? ? 1.3 变量的作用域

  • ? ? ? ? ? ? ? ? 全局变量--全局作用域下的变量
  • ? ? ? ? ? ? ? ? 局部变量--函数内部声明的变量,函数的形参也是局部变量
  • 注意:在函数内部没有声明直接赋值的变量也属于全局变量

? ? ? ? ?1.4 作用域链

? ? ? ? ? ? ? ? 内部函数能调用外部函数变量,用链式查找决定哪些数据能被内部函数访问,一层一层向外查找,就近原则取最近的变量。

2. js预解析

? ? ? ? 2.1 js引擎运行步骤:

  1. ? ? ? ? ? ? ? ? 预解析
  2. ? ? ? ? ? ? ? ? 代码执行

? ? ? ? ?2.2 预解析

? ? ? ? ? ? ? ? js引擎 会将js里面所有的 var 和 function 提升到当前作用域的最前面

? ? ? ? ? ? ? ?2.2.1?预解析分类

  • ? ? ? ? ? ? ? ? ? ? ? ? 变量预解析(变量提升)--将所有变量声明提升到当前的作用域最前面? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 不提升赋值
  • ? ? ? ? ? ? ? ? ? ? ? ? 函数预解析(函数提升)--将所有函数声明提升到当前的作用域最前面? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?不调用函数

?变量预解析例子?

例1

console.log(num);

var num = 10;

等同于

var num;//变量声明提升

console.log(num);

num = 10;//赋值没有提升,因此会报错

例2

fun();

var fun = function();{ //fun为变量表达式,不算函数

? ? ? ? ? ? ? ? console.log(22);

}

相当于

var fun;//变量预解析

fun();

fun =?function();{

? ? ? ? ? ? ? ? console.log(22);

}

?函数预解析例子?

例1

fun();

var fun = function(){//fun为变量表达式,不是函数

? ? ? ? ? ? ? ? console.log(22);

}

相当于

var fun;//变量预解析

fun();

fun = function(){

? ? ? ? ? ? ? ? console.log(22);

}

预解析综合案例?

?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 =?9, b = 9, c = 9;? b、c直接赋值没有var声明,看成全局变量

? ? ? ? var a;? ?//变量预解析

? ? ? ? a = b = c = 9;

????????console.log(a);

????????console.log(b);

????????console.log(c);

}

console.log(c);

console.log(b);

console.log(a);

运行结果

3. js对象

? ? ? ? 对象--一个具体的事物,一组无序的相关属性方法的集合

? ? ? ? ?3.1 创建对象的三种方法

? ? ? ? ? ? ? ? 3.1.1利用字面量创建对象

? ? ? ? ? ? ? ? ? ? ? ? 对象字面量:花括号{}内包含了表达这个具体事物的属性和方法

???????????????????????? 实例:

? ? ? ? ? ? ?var obj = {

? ? ? ? ? ? ? ? ? ? ? ? ? uname : ' ', 属性名:属性值,

? ? ? ? ? ? ? ? ? ? ? ? ? age : ' ',

? ? ? ? ? ? ? ? ? ? ? ? ? sex : ' ',

? ? ? ? ? ? ? ? ? ? ? ? ? sayHi : function(){

? ? ? ? ? ? ? ? ? ? ? ? ? console.log('hi');}

????????????????};//创建对象

? ? ? ? ? ? ? ? 3.1.2利用new Object创建对象

? ? ? ? ????????var obj = new Object();

????????????????obj.uname = '张三 '; 对象.属性 = 属性值;

????????????????obj.age = 18;

????????????????obj.sayHi = function(){

? ? ? ? ????????????????console.log('hi');

???????????????}?

? ? ? ? ? ? ? ? 3.1.3利用构造函数创建对象

? ? ? ? ? ? ? ? ? ? ? ? 构造函数:将对象里面一些相同的属性和方法抽象出来封装到函数

声明:????????function 构造函数名(形参){

? ? ? ????????????????? this.属性 = 值;

? ? ? ????????????????? this.方法 = function(){}

????????????????}

调用:? ? ? ? ?new 构造函数名(实参);

    <script>
        function Star(uname) {//构造函数
            this.name = uname;
        }
        var tmt = new Star('番茄');//对象
        console.log(tmt.name);
    </script>

?注意:

  1. 构造函数名字首字母要大写
  2. 构造函数不用return就可以返回结果
  3. 调用构造函数必须用new,并且同时创建了一个对象

? ? ? ? 3.2 使用对象的方法

? ? ? ? ? ? ? ? 3.2.1 方法一

????????????????????????对象名.属性名 例:obj.uname;obj.sayHi();函数必须记得带上括号

? ? ? ? ? ? ? ? 3.2.2 方法二

? ? ? ? ? ? ? ? ? ? ? ? 对象名['属性名'] 例:obj['age']

? ? ? ? 3.3 变量、属性、函数、方法的区别

? ? ? ? ? ? ? ? 3.3.1变量&属性

  • ? ? ? ? ? ? ? ? ? ? ? ? 变量:单独声明,赋值;使用时直接写变量名
  • ? ? ? ? ? ? ? ? ? ? ? ? 属性:在对象内不需要声明;格式:对象.属性

? ? ? ? ? ? ? ? 3.3.2 函数&方法

  • ? ? ? ? ? ? ? ? ? ? ? ? 函数:单独声明和调用;格式:函数名();
  • ? ? ? ? ? ? ? ? ? ? ? ? 方法:在对象内调用;格式:对象.方法();

? ? ? ? 3.4 遍历对象

? ? ? ? ? ? ? ? for(变量 in 对象)?{}

?????????????????例

? ? ? ? ? ? ? ? for(var k in obj){

? ? ? ? ? ? ? ? ? ? ? ? console.log(k);//输出得到对象obj的属性名

? ? ? ? ? ? ? ? ? ? ? ? console.log(obj[k]);//输出得到对象obj的属性

????????????????}

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-10 13:19:49  更:2021-08-10 13:21:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:04:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码