美文网首页
JavaScript-语句和变量

JavaScript-语句和变量

作者: 能吃饭也能吃苦1236 | 来源:发表于2018-05-11 13:33 被阅读0次

语句

  • JavaScript按行执行,一行就是一个语句,而语句是为了完成某种任务而进行的操作,语句以分号(;)结尾,如:
var i = a + b; /*用var声明变量i,然后将a+b的值赋给i;a+b为表达式*/
  • 表达式结尾没有分号,一旦在表达式后面添加分号,则 JavaScript 引擎就将表达式视为语句,这样会产生一些没有任何意义的语句。如:


    1.png

变量

  • 变量就是给值取名字,变量的名字叫变量。
  • JavaScript变量名区分大小写,A和a是两个不同的变量。
  • var,变量声明命令,它表示通知解释引擎,要创建一个变量。变量赋值不写var不会报错,但会很容易产生全局变量。
  • 变量的声明和赋值。
var i = a + b; 
/*实际上,变量的声明和赋值分为两个步骤*/
var i; /*声明变量i*/
i = a + b; /*将表达式a+b的值赋给变量a*/
  • 只声明变量却不赋值,该变量的值为undefined。


    2.png
  • 使用变量前要先声明,不然会报错。


    3.png
  • 变量的类型没有限制,变量可以随时更改类型。
var i = 1;
var i = 'abc';
  • 声明已经存在的变量是无效的。
var i = 1;
var i; /*此处声明为无效的*/
  • 重复声明同一个变量并且赋值,后面的值会把前面的值覆盖掉。
var i = 1;
var i = 2;
/*最终i的值为2*/
  • 变量提升
声明一个函数hello
function hello() {
  elem = document.getElementById("demo");
  elem.innerHTML = x; 
  var x = 5;
}

这个 var x = 5, 可以认为是两条语句,等价于
var x;   // 只有定义(声明)会提升
x = 5;  //  初始化值(赋值)这个操作,并不会被提升。

所以上面函数相当于:

function hello() {
  var x;   // 提升到这了, 默认值为undefined。
  elem = document.getElementById("demo");
  elem.innerHTML = x;    // 这个时候值还是undefined
  x = 5;
}

而函数声明,是一个语句,会被提升:

function hello() {
  var elem =  document.getElementById("demo");
  elem.innerHTML = ...

  function ok() {    // 这是个函数声明语句,会被整体提升
    console.log('ok')
  }
}

相当于:

function hello() {
  function ok() {    // 相当于写到最前面了。
    console.log('ok')
  }

  var elem =  document.getElementById("demo");
  elem.innerHTML = ...
}
这也是为什么说,js的变量作用域是函数作用域的(C,Java等语言的作用域是块级作用域)。因为所有的var和函数声明语句,都会被提升,相当于写在函数的顶部。

这也能初步解释在循环中绑定事件:

function test() {
  for (var i = 0; i < lis.length; i++) {
    lis[i].addEventListener('click', function() {
      console.log(i);   // 点击时总是输出 lis.length这个值
   });  
  }
}

因为上面的代码在变量提升后,相当于:

function test() {
  var i;  // 被提升到这里了,一个函数中就一个i。
  for (i = 0; i < lis.length; i++) {
    lis[i].addEventListener('click', function() {
      console.log(i);   // 点击时,i的值固定为循环完成的值。
    });  
  }
}

课上给的方法是:

function test() {
  for (var i = 0; i < lis.length; i++) {
    addEvent(i);
  }
  // 调用这个函数多次,每个index都是独立的
  function addEvent(index) {
    lis[index].addEvent('click', function() {
      console.log(index);
    });
  }
}
elem.innerHTML = x;     // 这个x实际上是未定义,所以会报错的,报错了就显示不出来了
x = 5;    // 这句话在浏览器,非use-strict模式下会执行成功,表现为给window设置了一个属性, 可以使用 window.x 查看。 

相关文章

  • JavaScript-语句和变量

    语句 JavaScript按行执行,一行就是一个语句,而语句是为了完成某种任务而进行的操作,语句以分号(;)结尾,...

  • JavaScript的基本知识

    目录 语句、变量、标识符 条件语句和循环语句 数据类型 1.语句、表达式、变量和标识符 语句:完成特定指令的代码,...

  • JavaScript-变量

    定义JavaScript变量使用var操作符。例如:var fish;(如果未进行变量赋值,则会默认初始化一个特殊...

  • JavaScript-变量

    变量 。变量可以是任意数据类型 。变量名是大小写英文、数字、$和-的组合,且不能以数字开头,不能是JavaScri...

  • JavaScript-变量

    可以使用以下方式声明变量: let const (固定的,不能被改变) var(旧式的,稍后会看到) 一个合格的变...

  • 【Javascript】变量的运用

    通过if语句判断变量 只要变量申明过就可以通过if语句进行判断,undefined和null在if语句中,都会转换...

  • JavaScript-循环语句

    while循环 基本格式 for循环 基本格式 所有for语句都可以转成while语句 do...while循环 ...

  • JavaScript-条件语句

    标识符 标识符命名规则(1)第一个字符,可以是任意 Unicode 字母(包括英文字母和其他语言的字母),以及美元...

  • JavaScript-循环语句

    循环语句有两种 for 和 while 。 while 循环 for 循环 do...while 循环 这个循环和...

  • JavaScript-条件语句

    条件语句 JavaScript提供if 和 switch 两种结构。 布尔值通常由一个条件表达式产生。true 执...

网友评论

      本文标题:JavaScript-语句和变量

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