详解前端变量提升

在非严格模式下,JavaScript中存在变量提升的特点。

1. 原因

JavaScript的工作原理是先编译再执行,在编译过程中,解释器会把所有声明“移动”到所在作用域的最上面,而赋值或其他逻辑会留在原地,这就是变量提升。

例如

foo();
function foo(){
  console.log(a); // undefined
  var a = 2;  
}

在编译后将被理解为下面的形式

function foo(){
  var a;
  console.log(a); // undefined
  a = 2;  
}
foo();

2.函数优先

在提升过程中,函数声明将首先提升,然后才是变量。只有函数声明( function a(){} )才会被提升,函数表达式( var a = function b(){} )不会提升。如果存在相同的声明,相同的变量声明将被忽略;相同的函数声明,后面的将会覆盖前面的。

例如

foo(); // 1
var foo;
function foo(){
  console.log(1);
}
foo = function(){
  console.log(2);
}

将被理解为

function foo(){
  console.log(1);
}
foo(); // 1
foo = function(){
  console.log(2);
}

 

转载于:https://www.cnblogs.com/diyichen/p/11183873.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Sass是一种CSS预处理器,它可以让你写更优雅、更简洁的代码,并且可以通过使用变量来简化CSS代码的编写。下面是关于Sass定义变量的详细介绍: ## 1. 定义变量 在Sass中,变量以美元符号($)开头并紧跟着变量名,例如: ``` $primary-color: #007bff; ``` 这里定义了一个$primary-color变量并将其设置为蓝色。 ## 2. 使用变量 在Sass中,引用变量时也需要使用美元符号,例如: ``` body { background-color: $primary-color; } ``` 这里将$primary-color变量的值(即#007bff)用作了body元素的背景颜色。 ## 3. 变量的作用域 在Sass中,变量的作用域与其他编程语言类似。如果变量在某个区块(如函数、mixin等)内定义,那么它只在该区块内有效。如果变量在全局作用域内定义,那么它在整个文件中都有效。 ## 4. 默认变量值 在Sass中,可以为变量设置默认值,当变量未被定义时使用该默认值。例如: ``` $primary-color: #007bff !default; ``` 这里定义了一个$primary-color变量,并且为其设置了默认值#007bff。如果在后续代码中没有重新定义$primary-color变量,那么它将使用默认值#007bff。 ## 5. 变量插值 在Sass中,可以通过插值将变量的值嵌入到其他字符串中。插值使用#{}语法,例如: ``` $primary-color: #007bff; .btn-primary { background-color: #{$primary-color}; } ``` 这里将$primary-color变量的值(即#007bff)嵌入到.btn-primary元素的背景颜色中。 总之,Sass中的变量可以帮助你简化CSS代码的编写,提高了代码的可维护性和可读性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值