首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

错误:'viewport‘已在较高作用域中声明

这个错误是由于在代码中重复声明了'viewport'变量,而且在较高的作用域中已经存在了。这种情况下,JavaScript解释器会优先使用较高作用域中的变量,而不会再创建一个新的变量。

要解决这个错误,可以考虑以下几种方法:

  1. 删除重复声明:检查代码中是否有多次声明'viewport'变量的情况,如果有,则删除其中一次或将其重命名为其他变量名。
  2. 作用域调整:如果确实需要在当前作用域中声明'viewport'变量,可以将其移动到一个新的作用域中,以避免与较高作用域中的变量冲突。
  3. 变量重命名:如果重复声明是因为需要在不同的作用域中使用不同的变量,可以考虑将其中一个变量重命名为其他名称,以避免冲突。

总结起来,解决这个错误的关键是避免重复声明同一个变量,并确保变量在使用之前已经在适当的作用域中声明。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【JavaScript】作用域 ① ( JavaScript 作用域 | 全局作用域 | 局部作用域 | JavaScript 变量 | 全局变量 | 局部变量 )

中 , 相同名称 的变量 本作用域的 变量 优先级较高 ; 二、JavaScript 变量 1、全局变量 和 局部变量 JavaScript 变量 根据 其 被声明作用域类型 , 分为 全局变量...: 在 全局作用声明的变量 , 就是全局变量 , 全局作用域就是 标签中 或者 js 文件中 ; 在 函数外部 声明的变量 ; 特殊情况 : 在 全局作用域中...; 函数形参 : 函数形参 也是 局部变量 ; 特殊情况 : 在 局部作用域中 没有使用 var 声明 , 而直接赋值使用的变量 , 也是 局部变量 ; 2、全局变量 和 局部变量 生命周期...全局作用域中 没有声明 直接使用的变量 也是 全局变量 num2 = 20; console.log("num = " + num); console.log...局部作用域中 没有声明 直接使用的变量 也是 局部变量 num2 = 20; console.log("arg = " + arg);

12510

【JavaScript】作用域 ② ( JavaScript 块级作用域 | ES6 之前 等同于 全局局部作用域 | ES6 使用 let const 声明变量 常量 有 块级作用域 )

; 在 ES6 之前 JavaScript 只有 全局作用域 和 局部作用域 概念 , 没有 块级作用域 概念 , 此时 块级作用域 相当于 全局作用域 或 局部作用域 , 具体 取决于 {} 是在哪个作用域中...关键字 声明的 变量 实际上具有 函数作用域 或 全局作用域 ; 如果 if 语句在 函数内部 , 则 在 if 代码块中 使用 var 声明变量 , 具有 函数作用域 ; 如果 if 语句在 全局作用域中...= 全局作用域 在下面的代码中 , 在 {} 代码块中 , 使用 var 关键字声明的变量 , 不具有块级作用域 , 而是具有 函数作用域 或 全局作用域 ; num 是在 if 语句内部声明的 ,...-- 设置 meta 视口标签 --> <meta name="<em>viewport</em>" content="width=device-width, initial-scale=1.0, user-scalable...{} 内部可见 ; 如果在 if 语句外部访问 num2 变量 , 会抛出如下<em>错误</em> : hello.html:19 Uncaught ReferenceError: num2 is not defined

31410
  • 作用域与声明提升

    image 在全局作用域中创建的变量都会作为window对象的属性保存,在全局作用域中创建的函数都会作为window对象的方法保存。...在全局作用域中创建的变量和函数可以在页面的任意位置访问,在函数作用域中也可以访问到全局作用域的变量。 尽量不要在全局中创建变量。...当在函数作用域中使用一个变量时,它会先在自身作用域中寻找,如果找到了则直接使用,如果没有找到则到上一级作用域中寻找,如果找到了则使用,找不到则继续向上找;若全局作用域也没有,则报错。...通俗地讲就是先上车后补票,先使用,后声明。 1.变量声明提升 在全局作用域中,使用var关键字声明的变量会在所有的代码执行之前被声明,但是不会赋值。...2.函数声明提升 在全局作用域中,使用函数声明创建的函数(function fun(){}),会在所有的代码执行之前被创建,也就是我们可以在函数声明前去调用函数,但是使用函数表达式(var fun =

    33920

    【JavaScript】预解析 ② ( 预解析示例分析 | 分步骤分析预解析过程 )

    中的 var num = 888; 变量 进行 预解析 , 将该 变量 在 局部作用域 中 提升到 最顶端 ; 该提升操作 , 也是只提升变量声明 , 变量 初始化赋值 操作 仍然保留在原地 ;...console.log(num); num = 888; } num = 666; fun(); 在 fun 函数的 局部作用域中...num 变量 , 然后再向上 查找 全局作用域 中的 num 变量 ; 在 fun 函数 的 局部作用域 中 , 找到了 num 变量 , var num; , 但是 该 num 变量 只进行了 声明...的 num2 和 num 进行预解析 , 将 变量 声明 提升到 局部作用域 的顶端 , 将 变量 初始化赋值 留在原地 , 预解析后的结果如下 : var num;...console.log(num1); console.log(num2); console.log(num); 在 fun 函数内部 , 可以打印出 3 个变量的值 888 ; 在 全局作用域中

    8510

    【JavaScript】JavaScript 变量 ② ( JavaScript 变量语法扩展 | 同时声明多个变量 | 只声明变量不赋值 | 不声明变量不赋值 | 不声明变量直接进行赋值 )

    , 只适用于 var 关键字 , let 和 const 关键字不能使用 ; 这种定义变量的方式已经过时 , 不推荐在现代 JavaScript 代码中使用 , 因为它可能会导致混淆和错误 ; 代码示例...-- 设置 meta 视口标签 --> 展示效果 : 2、只声明变量不赋值 在 JavaScript 中 , 使用 var 关键字 在 函数作用域或全局作用域...中 声明变量 , 使用 let 关键字 在 块级作用域 中 声明变量 , 如果 声明时 , 不进行赋值 , 变量 会被自动初始化为 undefined 值 ; 如果 使用 const 关键字 在 块级作用域...直接使用 , 会报错 console.log(name2); 执行后 , 在控制台中 , 报如下错误

    9910

    JS知识点梳理--作用域、作用域链、柯里化、闭包

    在局部作用域使用变量时,如果在自己作用域找不到对应变量,则会往上一级作用域查找,直到全局作用域,如果全局作用域无此变量则会报 undefined。相反,全局作用域中无法使用局部作用域中的变量。...// 全局作用域,声明了一个全局变量 avar a = 100// 函数会生成局部作用域function acs(){ // 在此局部作用域中声明一个局部变量 b var b = 50 //...-->在全局找到,使用全局作用域中的a // 在此作用域查找变量 b,查找到了,使用此局部变量的 b}()// 输出:b is...红宝书中的描写:闭包是指有权访问另一个函数作用域中的变量的函数。其实闭包就是返回一个函数,且这个函数对局部变量存在引用形成的包含关系就是闭包。其实就是创建一个不会被 GC 回收的局部变量。...在这个例子中利用闭包声明了 5 个新的独立词法作用域。<!

    51730

    前端基础知识整理汇总(上)

    同一个作用域下,对同一个函数的不同的调用会产生不同的执行上下文环境,继而产生不同的变量的值,所以,作用域中变量的值是在执行过程中确定的,而作用域是在函数创建时就确定的。...b,而不是出现错误。...var let 区别 var声明的变量,只有函数才能为它创建新的作用域; let声明的变量,支持块级作用域,花括号就能为它创建新的作用域; 相同作用域,var可以反复声明相同标识符的变量,而let是不允许的...这些闭包是由他们的函数定义和在 testFunc1 作用域中捕获的环境所组成的。这三个闭包在循环中被创建,但他们共享了同一个词法作用域,在这个作用域中存在一个变量i。...箭头函数保持它当前执行上下文的词法作用域不变,而普通函数则不会。换句话说,箭头函数从包含它的词法作用域中继承到了 this 的值。

    1.3K10

    JS知识点梳理之作用域、作用域链、柯里化、闭包

    在局部作用域使用变量时,如果在自己作用域找不到对应变量,则会往上一级作用域查找,直到全局作用域,如果全局作用域无此变量则会报 undefined。相反,全局作用域中无法使用局部作用域中的变量。...// 全局作用域,声明了一个全局变量 avar a = 100// 函数会生成局部作用域function acs(){ // 在此局部作用域中声明一个局部变量 b var b = 50 //...-->在全局找到,使用全局作用域中的a // 在此作用域查找变量 b,查找到了,使用此局部变量的 b}()// 输出:b is...红宝书中的描写:闭包是指有权访问另一个函数作用域中的变量的函数。其实闭包就是返回一个函数,且这个函数对局部变量存在引用形成的包含关系就是闭包。其实就是创建一个不会被 GC 回收的局部变量。...在这个例子中利用闭包声明了 5 个新的独立词法作用域。<!

    45820

    网页页面下各种标签的含义

    如果不是的话,它不起作用 (2).content的内容是IE=8,或者IE=edge等值,注意不是IE8或者直接写个edge的值,否则不起作用 3、canonical : 这个标签是 Google、雅虎...可在副本网页的头部(head)加一个link标签,指定首选URL,声明一个权威网页做为复制网页的规范版本,SE将把链接等信息都转移到这个首选版本上,当然搜索结果中也显示权威网页。...*link rel="canonical"属性可以被传递,即A页面声明B为权威链接,B声明C为权威网页,则SE会认为C是A和B共同的首选权威版本。...*此标签只是建议,不是命令,意思是如果设置的不合理,SE仍会按正常的方式确实首选的网页;如权威页指向404页,或指像的页面返回错误,SE仍会索引这个页的内容。...这个name为viewport的meta标签到底有哪些东西呢,又都有什么作用呢?

    1.7K10

    网页页面下各种标签的含义

    如果不是的话,它不起作用 (2).content的内容是IE=8,或者IE=edge等值,注意不是IE8或者直接写个edge的值,否则不起作用 3、canonical : 这个标签是 Google、雅虎...可在副本网页的头部(head)加一个link标签,指定首选URL,声明一个权威网页做为复制网页的规范版本,SE将把链接等信息都转移到这个首选版本上,当然搜索结果中也显示权威网页。...*link rel="canonical"属性可以被传递,即A页面声明B为权威链接,B声明C为权威网页,则SE会认为C是A和B共同的首选权威版本。...*此标签只是建议,不是命令,意思是如果设置的不合理,SE仍会按正常的方式确实首选的网页;如权威页指向404页,或指像的页面返回错误,SE仍会索引这个页的内容。...这个name为viewport的meta标签到底有哪些东西呢,又都有什么作用呢?

    1.6K10

    【JS】预编译详解

    JS有两种作用域:全局作用域和函数作用域 内部的作用域能访问外部,反之不行;访问时从内向外依次查找 如果在内部的作用域中访问了外部,则会产生闭包(下面是关于闭包简单介绍,后面将会更新”闭包“相关内容)...内部作用域能访问的外部,取决于函数定义的位置,和调用无关 作用域内定义的变量、函数声明会提升到作用域顶部——预编译;在JS中只有var和function会进行声明提升 示例: js语言 broswer...,执行函数demo时,先将1赋值给b,再将b的值赋值给a;虽然a、b是在函数作用域中,但由于b未经声明,所以下面在browser环境中输出的结果表明b 在 window 属性中,而 a 则不会出现在全局对象中...;函数demo的声明是在全局作用域,所以它归window对象所有 2.四部曲 预编译步骤: 创建 AO 对象(Activation Object,执行上下文) 找形参和变量声明,将变量和形参作为 AO...meta charset="UTF-8" /> <meta name="<em>viewport</em>

    1.3K20

    python基础之函数global和nonlocal关键字

    ---- 二、global和nonlocal关键字   当内部作用域想要使用外部作用域的变量时,可使用global和nonlocal关键字。...1.global关键字   在函数内部修改一个定义在函数外的变量时,须使用global关键字明确声明变量。...在函数内部通过global关键字来声明或定义全局变量,可分为两种情况: (1)一个变量已在函数外定义,如果在函数内需要使用该变量的值或修改该变量的值,并将修改结果反映到函数外,可以在函数内用关键字global...明确声明该全局变量。...在这里插入图片描述 2.nonlocal关键字   如果要在一个嵌套的函数中修改嵌套作用域中的变量,则须使用nonlocal关键字。   例:分析以下程序的运行结果。

    24120

    Go语言基础2 - 控制语句( if, for, switch )

    概述 我们将用几节来学习Go语言基础,本文结构如下: 控制结构 * If -重新声明与再次赋值 * For * Switch -类型选择 控制结构...= nil { log.Print(err) return err } 重新声明与再次赋值 先看个例子: f, err := os.Open(name) if err !...但这种重复仍然是合法的: err 在第一条语句中被声明,但在第二条语句中只是被再次赋值罢了。 也就是说,调用 f.Stat 使用的是前面已经声明的 err,它只是被重新赋值了而已。...在满足下列条件时,已被声明的变量 v 可出现在:= 声明中: 本次声明与已声明的 v 处于同一作用域中(若 v 已在外层作用域中声明过,则此次声明会创建一个新的变量§), 在初始化中与其类型相应的值才能赋予...v,且 在此次声明中至少另有一个变量是新声明的。

    50500

    【ES】199-深入理解es6块级作用域的使用

    块级声明意在指定一个块级作用域,使得块级作用域中所定义的变量无法再全局被访问到,块级作用域也被称为词法作用域。...如以下示例: var name = 'eveningwater'; //报错,重复声明 let name = 'loho'; 当然这两个变量必须是在同一个作用域中,如果是不同作用域中,则不会报错。...(name); 同样的const也不能重复声明,如下例: var name = 'eveningwater'; //错误,不能重复声明 const name = 'loho'; 但也可以在不同作用域中重复声明...前面提到let和const声明的变量都不会提升到作用域的顶部,因此在使用这两个标识符声明之前访问会报错,即使是typeof操作符也会触发引用错误。...7.全局作用域绑定 let,const声明与var声明还有一个区别就是三者在全局作用域中的行为。

    3.7K10
    领券