JS(二)基本语法

作者: 长鲸向南 | 来源:发表于2018-08-02 00:38 被阅读66次

参考:

JavaScript 的基本语法​wangdoc.com

1、语句&表达式

语句(statement):是为了完成某种任务而进行的操作,一般不需要返回值。

表达式(expression):是指一个为了得到返回值的计算式,一定会返回一个值。

var a = 1 + 2;

如上述代码就是一句赋值语句,1+2就是表达式,两者的区别就是语句是为了完成某种任务,而表达式是为了得到返回值。

语句一般用分号结尾,表达式不需要分号结尾,一旦表达式加上分号,就被JS引擎视为语句

1 + 1 ;
'ccc';

比如上面两行语句只是单纯地产生一个值,没有任何实际的意义。

2、变量

变量是对‘值’的具名引用,简而言之,就是为‘值’起名。

var a = 1;

变量的声明和赋值是分两步走的,如上述语句:

  • 声明创建一个变量a
  • 将数值1赋值给变量a

也就是说实际步骤如下:

var a;
a = 1;

2.1 只声明变量不赋值

var a;
a // 变量值是undefined(无定义)

2.2未声明变量就直接使用

a;
// ReferenceError : a is not defifned

JS会报错,告知变量未定义

2.3 var

var a = 1;
// 基本等同于
a = 1;

两个语句虽然基本等同,但是不写var不利于表达意图,很容易在不知不觉中创建全局变量

2.4 变量提升(hoisting)

JS 引擎工作方式是,先解析代码,获取所有被声明的变量,然后再一行行的运行,造成的结果就是所有变量的声明语句都会被提到代码头部,这就是变量提升。

我举个例子给你看

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

按理说上述语句应该报错,因为打印变量a,但是a的声明赋值语句还没执行,但实际上不会报错,因为变量提升,真正的执行步骤是这样的:

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

所以最后的结果不是报错,而是undefined,因为a只声明未赋值。

注:变量提升只对var命令声明的变量有效,如果一个变量不是用var命令声明的,就不会发生变量提升。

比如

console.log(a)
a = 1;

这样语句将会报错,提示“ReferenceError: a is not defined”。即变量a未声明。

这是因为a不是用var命令声明的,变量提升没有发生。

3、标识符(identifier)

标识符用来是被各种值得合法名称,最常见的标识符就是变量名以及后面会提到的函数名。

注:JS语言的标识符对大小写敏感,a和A是不同的。

标识符命名规则:

  • 第一个字符:可以是任意Unicode字母(包括英文以及其他语言字母),还有美元符号$与下划线_
  • 第二个字符及后面的字符,除了Unicode字母,美元符号$和下划线_,还可以用数字0-9
// 合法标识符例子
a$s000
_tmp
$elem
π
// 非法标识符例子
0uu$  // 标识符不能数字开头
***  // 标识符不能包含星号
a+b  // 标识符不能包含加号
-d  // 标识符不能包含减号或连词线

JavaScript有一些保留字,不能用作标识符:arguments、break、case、catch、class、const、continue、debugger、default、delete、do、else、enum、eval、export、extends、false、finally、for、function、if、implements、import、in、instanceof、interface、let、new、null、package、private、protected、public、return、static、super、switch、this、throw、true、try、typeof、var、void、while、with、yield。

4、注释

  • 单行注释
// 单行注释

  • 多行注释
/* 
 这样
 就是
 多行
 注释
 */

  • 此外,由于历史上 JavaScript 可以兼容 HTML 代码的注释,所以也被视为合法的单行注释。但是-->只能用再句首,否则会被当做运算符。
a = 1; <!-- a =2;
-->

5、区块(block)

JS使用{}将多个相关语句组合在一起,称为区块

注:对于var命令来说,JavaScript 的区块不构成单独的作用域(scope)。

6、条件语句

6.1 if 语句

if结构先判断一个表达式的布尔值,然后根据布尔值的真伪,执行不同的语句。

所谓布尔值,指的是 JavaScript 的两个特殊值,true表示真,false表示伪。

if(布尔值){
   语句;
}

上面是if结构的基本形式。需要注意的是,“布尔值”往往由一个条件表达式产生的,必须放在圆括号中,表示对表达式求值。

如果表达式的求值结果为true,就执行紧跟在后面的语句;如果结果为false,则跳过紧跟在后面的语句。

注:赋值表达式(=),相等运算符(==),严格相等运算符(===)要注意区分

尤其是赋值表达式,它不具备比较功能

var x = 1;
var y = 2;
if (x = y) {   //应该使用严格相等运算符  x===y 就可以了
  console.log(x);
}
// "2"

本意是使x=y,但是在JS中就成了把y的值赋给x,所以打印x就得到了2。

至于相等运算符(==)和严格相等运算符(===)的区别,简单来讲就是:

相等运算符(==)比较两个值是否相等,严格相等运算符(===)比较它们是否为“同一个值”。
如果两个值不是同一类型,严格相等运算符(===)直接返回false,而相等运算符(==)会将它们转换成同一个类型,再用严格相等运算符进行比较。

6.2 if···else

if(condition){
  代码块;  //true statement
}else {
  代码块;  //false statement
}

其中condition可以是任意表达式,结果不一定是布尔值。

JavaScript解释器会自动调用Boolean()将表达式结果转为布尔值,如果表达式为真,执行第一个代码块内语句;如果为假,执行第二个代码块内语句

if语句可以单独使用,也可以和多个else连续使用

if (m === 0) {
  // ...
} else if (m === 1) {
  // ...
} else if (m === 2) {
  // ...
} else {
  // ...
}

这样似乎麻烦了一点,所以就引出了下面一个结构switch

6.3 switch结构

switch(expresstion){
    case value1:     //该条件:(满足)这个值
        statement;   //则执行该语句
        break;       //强制输出
    case value2:
        statement;
        break;
    default:  
        statement;
}

  • switch和case可以使用任意表达式,不一定是常量
  • switch语句后面的表达式,与case语句后面的表示式比较运行结果时,采用的是严格相等运算符(===),而不是相等运算符(==),这意味着比较时不会发生类型转换。
image

6.4 三元运算符 ? :

//语法
(条件) ? 表达式1 : 表达式2
// 如果“条件”为true,则返回“表达式1”的值,否则返回“表达式2”的值。

例子:

var even = (n % 2 === 0)? true : false;
// 等同于
var even;
if(n % 2 === 0){
   even = true;
}else{
   even = false;
}

7、循环语句

7.1 while循环

前测试循环语句,先条件判断,后执行。也就是说while循环最少执行0次,一开始条件就不符合,所以不予执行。

while(expression){
   statement;
}
// 只要条件为true,就一直循环

image

7.2 do···while循环

后测试循环语句,先执行后条件判断,也就意味着不管条件真假,do···while循环至少要运行一次。这是与while循环的最大区别。

do{
  statement;
}while(expression);

image

7.3 for循环

可以看成是简化了一下while语句,指定了初始化表达式,条件判断语句,递增(递减)表达式。

var a = 3;
for(var i = 0; i < a ; i++){
   console.log(i);
}
//  等同于
var a = 3;
var i = 0;
while(i < a){
   console.log(i);
   i++;
} 

7.4 break语句和continue语句

break语句用于跳出代码块或循环

image

本来应循环到i <100为假为止,但是加上break语句后,循环到第8次就跳出了循环。

continue语句用于立即终止本轮循环,返回到循环头部开始新一次的循环。

image

利用continue语句实现了只要是偶数就跳过,只输出奇数这样一种状态。

欢迎纠错,待续……

相关文章

  • JS(二)基本语法

    参考: JavaScript 的基本语法​wangdoc.com 1、语句&表达式 语句(statement):是...

  • JAVA 之 JS知识框架

    一、js的简介 二、js基本语法 三、js内建对象 四、js的函数 五、js的事件 六、js的bom 七、js的dom

  • js的结合方式js的基本语法js的数据类型js中的语句js中的运

    结合方式1 结合方式2 js的基本语法 二ECMAScript 基础2.1.ECMAScript 语法变量区分大小...

  • JS基本操作

    js编写位置 js基本语法 字面量和变量

  • 10

    js编写位置 !DOCTYPE html> js编写位置 js基本语法 !DOCTYPE html> ...

  • JS补充3

    JS的基本语法 JS语句基本规则 语句后面要用分号结束,特例:function,for, if后面...

  • JS基础和WebAPIs的关联性

    学习ECMAscript标准规定的基本语法掌握JS基础语法只学习JS基础做不了网页交互效果学习JS基础语法是为了后...

  • js基本语法

    1、分类ECMAScript js基本语法与标准DOM Document Object Mode...

  • JS基本语法

    1、分类ECMAScript js基本语法与标准DOM Document Object Model文档对象模型BO...

  • JS基本语法

    编写位置: 可以将js代码编写到外部js文件中,然后通过script标签引入 写到外部文件中可以在不同的页面中同时...

网友评论

    本文标题:JS(二)基本语法

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