当前位置: 首页 > news >正文

大型网站后台用什么语言网站如何做网站解析

大型网站后台用什么语言,网站如何做网站解析,电商网站建设培训,wordpress图片怎么控制高度JS的作用域 1. 全局作用域 全局作用域是在代码的任何地方都能访问到的最外层作用域。在浏览器环境下,全局作用域就是window对象,因此所有在全局作用域中声明的变量和函数都会成为window对象的属性和方法。 var globalVar "I am global"; …

JS的作用域

1. 全局作用域

全局作用域是在代码的任何地方都能访问到的最外层作用域。在浏览器环境下,全局作用域就是window对象,因此所有在全局作用域中声明的变量和函数都会成为window对象的属性和方法。

var globalVar = "I am global";  function globalFunc() {  return "Hello from global function";  
}  console.log(window.globalVar); // 输出: I am global  
console.log(globalFunc()); // 输出: Hello from global function

2. 局部作用域

局部作用域是限定在函数或代码块内部的作用域。

function myFunction() {  var localVar = "I am local";  function localFunc() {  return "Hello from local function";  }  console.log(localVar); // 有效  console.log(localFunc()); // 有效  
}  // 在这里尝试访问 localVar 或 localFunc 会导致 ReferenceError

3.块级作用域(ES6+)

在ES6之前,JavaScript只有全局作用域和函数作用域。但从ES6开始,引入了let和const关键字,它们声明的变量具有块级作用域,即只在最近的包含块({})内有效。

if (true) {  let blockScopedVar = "I am block scoped";  console.log(blockScopedVar); // 有效  
}  // 在这里尝试访问 blockScopedVar 会导致 ReferenceError

作用域链

当JavaScript引擎需要查找一个变量时,它会从当前作用域开始查找,如果没有找到,就会继续向上查找父级作用域,直到找到全局作用域。这个逐级向上查找的过程形成了一条作用域链。

  var x = 10;function outer() {var x = 20;function inner() {var x = 30;console.log(x); // 30}inner();console.log(x); // 20}outer();console.log(x); // 10

闭包

闭包是JavaScript中一个非常重要的概念,它允许一个函数访问并操作函数外部的变量。闭包是由函数以及创建该函数的词法环境组合而成的。闭包使得内部函数能够记住并访问其词法作用域,即使外部函数已经执行完毕。

function outerFunction() {  var outerVar = "I am outer";  function innerFunction() {  console.log(outerVar); // 访问外部函数的变量  }  return innerFunction;  
}  var myClosure = outerFunction();  
myClosure(); // 输出: I am outer

预解析

一、预解析的定义

预解析(Hoisting)是JavaScript引擎的一种行为,即在代码执行之前,会将所有用var声明的变量和用function声明的函数提升到其所在作用域的最顶部,但并不会提升变量的赋值或函数的调用。对于var声明的变量,其值会被初始化为undefined;对于function声明的函数,其整个函数体会被提升到顶部,但不会被执行。

二、预解析的类型

变量预解析:
变量预解析也称为变量提升(Variable Hoisting)。
使用var声明的变量会在其所在作用域的最顶部被声明,但赋值操作不会提升。

console.log(a); // undefined  
var a = 1;

 函数预解析:
函数预解析也称为函数提升(Function Hoisting)
使用function声明的函数会在其所在作用域的最顶部被声明并定义,但不会被调用。

console.log(fn()); // 假设fn函数有返回值  
function fn() {  return 1;  
}
//匿名函数表达式console.log(foo); // undefinedvar foo = function() {console.log(10);}//函数声明和函数//相当于执行以下代码var foo;foo(); foo = function() {console.log(10);}

三、预解析的注意事项

同名变量和函数:
如果存在同名的变量和函数声明,函数声明会覆盖变量声明。但如果变量已经被赋值,则不会被覆盖。


var fn = 10;  
function fn() {  console.log('hello world');  
}  
fn(); // TypeError: fn is not a function

函数声明的优先级:

在同一作用域内,函数声明的优先级高于变量声明。

console.log(fn()); // 假设fn是一个函数  
var fn = 10;  
function fn() {  return 1;  
}  // 这种情况在严格模式下会抛出SyntaxError

函数表达式不会被提升:
使用函数表达式(如var fn = function() {...})声明的函数不会被提升。
块级作用域:
在ES6及以后的版本中,let和const声明的变量具有块级作用域,它们不会在块外部被提升。

if (true) {  let a = 1;  
}  
console.log(a); // ReferenceError: a is not defined



 

http://www.yayakq.cn/news/253431/

相关文章:

  • 单位做网站有哪些小说阅读网站建设市场需求分析
  • 哪里有网站建设流程网站维护技术
  • asp.net微信网站我是做废品回收,最近有个变宝网主动联系我说是再生资源网站的,可信吗?
  • 网站制作复杂吗服装设计工作室
  • 杏坛网站制作佛山企业网站多少钱
  • 网站建设免费建站免费源代码汉阳区建设局网站
  • 怎样做网站xml如何做网络集资网站
  • 郑州做网站推广电话南开做网站的公司
  • 网站建设需要使用阿里云吗邹城房产信息网
  • 网站建设的实验步骤做的网站客户拿去维违法
  • 自己做的网站改变字体建设网站需要资料
  • 网站建设 网络推广计算机语言入门先学什么
  • 昆山开发区网站制作做一个京东这样的网站需要多少钱
  • 南京外贸网站建设哪家好如何批量入侵WordPress站
  • 打开陕西建设厅网站深圳产品网站建设
  • 哪里可以找到制作网站的公司中国建设银行网站e路
  • 设计理念网站南宁网站建设nnxun
  • 网站建设默认字体南京 网站备案
  • 高端网站建设kgu网站是怎么被挂马
  • 博物馆网站建设必要性建设银行网站需要什么浏览器
  • nas可以做网站阿里云wordpress在哪里设置密码
  • 大连企业制作网站怎么做阿里巴巴外贸网站
  • 互动网站案例国内网页设计网站建设
  • 网站怎么做视频望京SOHO网站建设
  • 公司为什么要建立网站创建平台
  • 工业设计网站哪个最好网页设计评价
  • 禁止显示网站目录网络营销有哪些
  • 网站查询工具seo广告策划书撰写
  • 广东省网站建设公司排名网站降权不收录
  • 做电影网站怎样赚钱吗html5黑色网站