• js基础知识整理之 —— 全局作用域


    window是个对象
    1、在全局作用域下定义的变量,相当于给window增加了一个属性(包含属性名跟属性值)

    var str="fg";
    console.log(str);//--->fg
    console.log(window.str);//--->fg
    
    • 1
    • 2
    • 3

    2、在私有作用域下定义的变量,跟全局没有任何的关系;

     function strsun() {
        var str="asdfj"
     }
    
    • 1
    • 2
    • 3
     没有被var的变量,也是给window增加一个属性名
    
    • 1
    str="jk";
    console.log(str);//--->jk
    console.log(window.str);//--->jk
    
    • 1
    • 2
    • 3

    eg:
    在这里插入图片描述
    undefined+200是NaN
    null+200是200

    eg:
    在这里插入图片描述

    在私有作用域中,如果变量不是私有的,那么它的值往上一级作用域查找;如果上一级也没有,那么继续向上查找,直到找到window为止,如果window下面也没有,那么就会报错

    在这里插入图片描述
    在这里插入图片描述

    怎和判断是不是私有变量呢?

    • 首先看是不是形参(形参肯定是私有变量)
    • 再看有没有被var过
    • 如果即不是形参也没有被var过 就说明当前这个变量不是私有变量
    var obj={name:"monkey"};
    var obj={ary:[]};
    var obj={aa:{}};
    var ary=[{name:"monkey"},1,"yyds"];
    
    • 1
    • 2
    • 3
    • 4

    以上几种情况都是可以成立的 但是要求字符串必须加引号 不加引号JS不认

    对象里面的所有属性名都是字符串 属性值 有可能是字符串 有可能不是
    
    • 1

    练习题01
    在这里插入图片描述
    判断某一个属性名是否属于某个对象,用in方法

    var obj={name:"zhufeng"};
    console.log("name" in obj);//-->true  如果没有 打印false
    
    • 1
    • 2
    注:如果这个name没加" "引号  打印false
    
    • 1
    console.log(obj.age);//-->undefined
    console.log(a in window);//a is not defined
    
    • 1
    • 2

    练习题02
    在这里插入图片描述
    时参必须从自执行函数的外面拿foo hello 时参是入口 所以从外面拿 从时参住里传
    (传地址的话 外面也是改变的 传数值的话 只改变里面的)
    形参的名字任意取 但是实参不能随便取 必须外面也有

    例如

    function sum(num) {
    }
    sum(num)<----- 这个num 在函数外面必须也有一个 要不实参找不到它
    
    • 1
    • 2
    • 3

    || 条件语句中,有一个是真,当前条件就是true
    赋值:
    || 左边转布尔就是true 取|| 左边的值
    || 转布尔是false 取|| 右边的值
    例如:var foo=foo||'world';(如果|| 左边的是false 不管右边的是啥 都取|| 右边的)

    函数分两部分: 定义 执行
    自执行函数:定义加执行一块完成
    (function (total)){ } 自执行函数本身不进行变量提升,但是在自执行函数执行的时候,里面的代码要进行变量提升

    普通函数: function sum(){} 进行变量提升,
    sum=xxxfff111 是对这个sum 这个函数的名字 先进行变量提升
    在这里插入图片描述

  • 相关阅读:
    图详解第四篇:单源最短路径--Dijkstra算法
    开发一款小程序游戏需要多少钱?
    Redis Cluster 原理说的头头是道,这些配置不懂就是纸上谈兵
    探索APP流量变现的新途径
    Verilog开源项目——百兆以太网交换机(二)AES加解密模块设计
    【极客时间】《Java并发编程实战》学习笔记
    java类初始化及代码块加载顺序连根拔起
    EDP .Net开发框架--组织架构
    软件开发之路——关于架构师的一些书籍
    【Java技术专题】「Java8技术盲区」函数接口字典-看看还有哪些你所不知道函数接口
  • 原文地址:https://blog.csdn.net/qq_39669919/article/details/126123288