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

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

var str="fg";
console.log(str);//--->fg
console.log(window.str);//--->fg

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

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

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"];

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

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

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

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

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

例如

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

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

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

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

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值