js中申明变量需注意

作者: Beauty_Beast | 来源:发表于2018-06-20 22:23 被阅读14次

申明:本文是js系列笔记之一,有不正确的地方请尽管指出,大家相互学习,共同进步;

js语言分严格模式strict与非严格模式,

问题产生:在非严格模式下, 如果某个变量被初始化,而没有事先声明;那么该变量会自动被添加到全局作用域中;看下边的现象:


非常出乎意料的结果

再试试下边:

和上边比较下,觉得有点意思了

想想为什么会这样:再试试下边

举一隅不以三隅反?

看到这里相信大家都明白了,开始所述,必须有一个前提,那么就是方法被调用过,或者该变量被使用过,为什么会这样,我猜测大概是这样得方法在未被调用之时,只是声明了,方法内部,js线程是不去管的,只有在被调用时,线程执行到方法中,该变量被使用,才会被js添加到全局作用域中;

前边提到了,严格模式;上边所说的结果都是在非严格模式下才会出现的结果,在严格模式下,没有被申明的变量,突然冒出来,会直接暴出 未被定义的error;顺便说下,严格模式下,js不让使用with语句的,,这也证明了我在前边对with的理解,js本身都不建议使用with语句;

js有太多的灵活性与不确定性,这也导致了其 缺陷;

相关文章

  • js中申明变量需注意

    申明:本文是js系列笔记之一,有不正确的地方请尽管指出,大家相互学习,共同进步; js语言分严格模式strict与...

  • js 变量作用域和函数作用域

    js变量作用域可分为:“全局变量”和“局部变量” “全局变量”:申明在函数之外的变量 “局部变量”:申明在函数体中...

  • js基础概念 简记

    语句:js中语句可不用分号结尾 var a = 3 声明前置: 变量申明前置和函数申明前置 注释: // 单行注...

  • JavaScript基本(一)

    变量 js有三种申明变量的方式,var,let const var关键字 var 申明的变量是一个函数作用域的变量...

  • JS申明函数的方法和函数中this的指向

    最近在学js,了解到js函数的重要性,因此做一个总结。 1.js函数申明方式 1.直接申明 2.定义变量来申明 注...

  • ES6变量

    JS的变量申明 var 可以重复声明 无法限制修改,即常量 没有块级作用域{} ES6的变量申明 let 不能重复...

  • 常量

    js中 var、 let 申明的都是变量,ES6以前约定用大写的变量名表示常量,ES6 使用 const 关键字申...

  • javascript 三种变量申明方式var、let、const

    在nodejs开发学习中,发现有let申明变量,故查询了下javascript的变量申明方式: var 申明方式;...

  • react native:(基本常用JS语法)

    1.类型&变量申明&作用域 类型 js中一共有7种内建类型: null undefined(js 和OC 的区别 ...

  • React Native使用JS和React编写Android/

    react native:(基本常用JS语法) 一、类型&变量申明&作用域 1、类型js中一共有7种内建类型:nu...

网友评论

    本文标题:js中申明变量需注意

    本文链接:https://www.haomeiwen.com/subject/qshfyftx.html