您当前的位置: 首页 >  Java

暂无认证

  • 0浏览

    0关注

    92582博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

JavaScript之变量提升-笔试题

发布时间:2022-04-01 16:44:32 ,浏览量:0

目录
  • 1、自执行函数
  • 2、变量提升与是否进入判断无关
  • 3、形参、未定义赋值
  • 4、in关键字、变量提升与判断无关
  • 5、形参、||表达式赋值
  • 6、函数提升的优先级高于一切
  • 7、函数提升高于一切、重新赋值
  • 8、总结
1、自执行函数
var a = 10; (function a() { console.log(a); a = 20; console.log(window.a); var a = 30; console.log(a); // 等同于 // 内部作用域 // var a; // 声明未赋值,结果为 undefined // console.log(a); // undefined // a = 20; // 内部作用域的a赋值为20 // console.log(window.a); // window中a的值依然是10  // a = 30; // 内部作用域的a赋值为30 // console.log(a); // 打印的是内部作用域中的a值为30 })(); 
2、变量提升与是否进入判断无关
var name = '张三'; function fn() { if (typeof name === 'undefined') { var name = '李四'; // 变量提升与是否进入判断无关 // 无论是否进入判断,变量都会提升 // 所以typeof nema的结果为'undefined' console.log('辛苦了:' + name); // 辛苦了:李四 } else { console.log('吃饭没:' + name); }; }; fn(); 
3、形参、未定义赋值
var a = 10, b = 20, c = 30; function fn(a) { // 形参即是定义在函数中的变量 a = 1; var b = 2; c = 3; // 给未定义的变量强行赋值, // 变量会挂载到全局 }; fn(100); console.log(a, b, c); // 10 20 3 
4、in关键字、变量提升与判断无关
// ("a" in window) in 关键字查找window对象中是否存在变量a // "a" in window成立了,所以这个条件不执行 if (!("a" in window)) { var a = 10; }; console.log(a); // undefined 
5、形参、||表达式赋值
var fn = 'hello'; (function (fn) { // 定义形参即是定义了变量 // 因为形参有对应的实参 // 所以值为'hello' console.log(fn); // hello // 同一作用域内,可以使用var定义多个同名变量 // 此处定义的fn变量会覆盖形参变量 // 并且赋值为fn // ||前有值所以不往后执行 // 所以赋值为'hello' var fn = fn || 'world'; console.log(fn); // hello })(fn); console.log(fn); // hello 
6、函数提升的优先级高于一切
var n = 10; function fn(n) { console.log(n); // ƒ n() { } var n = 20; console.log(n); // 20 function n() { }; console.log(n); // 20 }; fn(n); console.log(n); // 10 
7、函数提升高于一切、重新赋值
function fn(fn) { console.log(fn); // ƒ fn() { //     console.log(fn); // } var fn = 20; console.log(fn); // 20 function fn() { console.log(fn); }; }; fn(30); var fn = 10; console.log(fn); // 10 
8、总结

变量的提升是JavaScript的默认行为,它会将所有变量声明移动到当前作用域的顶部,并且可以在声明之前使用变量。初始化不会被提升(赋值留在原地),提升仅作用于变量的声明。

关注
打赏
1653961664
查看更多评论
立即登录/注册

微信扫码登录

0.3712s