JS基础篇

语法

声明变量

var a ;

赋值

var a = 1 + 5;
var a;
a = 1;


x
// ReferenceError: x is not defined

var a, b;

赋值有两种方法:可以 var a =1+3 ;
也可以 var a;
a = 1;

如果只是声明变量而没有赋值,则该变量的值是`undefined`。`undefined`是一个特殊的值,表示“无定义”

语句必须以分号结尾,一个分号就表示一个语句结束。多个语句可以写在一行内。
JavaScript 的变量名区分大小写,A和a是两个不同的变量。
使用变量时必须要声明 如果没有声明就会报错 
// ReferenceError: x is not defined

也可以同时声明两个变量

var a = 1;
a = 'hello';

JavaScript 中变量的类型没有限制,变量可以随时更改类型。

覆盖

var x = 1;
var x;   //无效



var x = 1;
var x = 2;

//等同于

var x = 1;
var x;
x = 2;

如果使用var重新声明一个已经存在的变量,是无效的。

但是,如果第二次声明的时候还进行了赋值,则会覆盖掉前面的值。

变量提升

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

//由于变量提升  真正运行的代码相当于 
var a ;
console.log(a);
a = 1;

上面代码在控制台输出变量a的值。但是在此时变量a还没有声明和赋值,这是一种错误的做法,但是实际上不会报错。因为存在变量提升,真正运行的是下面的代码。

最后的结果是显示undefined未定义,表示变量a已声明,但还未赋值。

标识符

标识符就是名称的专业术语。比如变量名、函数名、参数名和属性名。

规则:

        第一个字符,可以是任意 Unicode 字母(包括英文字母和其他语言的字母),以及美元符号($)和下划线(_)。

        第二个字符及后面的字符,除了 Unicode 字母、美元符号和下划线,还可以用数字0-9

注释

在JS中注释有两种

// 单行注释

/*
 多行
 注释
*/

一种是单行注释,用//起头;

另一种是多行注释,放在/**/之间。

x = 1;
<!-- x=2 -->

 <!-- x = 2;
--> x = 3;

JavaScript 可以兼容 HTML 代码的注释,所以<!-- 内容  -->也被视为合法的单行注释。

上面代码中,只有x = 1会执行,其他的部分都被注释掉了。

需要注意的是,-->只有在行首,才会被当成单行注释,否则会当作正常的运算。

区块

JS中使用大括号,将多个相关的语句组合在一起,称为“区块”(block)。

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


function j(n) {
  while (n > 0) console.log(n);
}
j(3)

对于var命令来说,JS的区块不构成单独的作用域(scope)。所有使用和不使用没啥区别

上面代码在区块内部,使用var命令声明并赋值了变量a,然后在区块外部,变量a依然有效,区块对于var命令不构成单独的作用域,与不使用区块的情况没有任何区别。在 JS中,单独使用区块并不常见,区块往往用来构成其他更复杂的语法结构,比如forifwhilefunction等。

条件语句

在JS中有 if ,switch 两种结构的条件语句

if (布尔值) 后面跟 需要执行的语句;

“布尔值”是由一个条件表达式产生的。如果表达式的结果为true,就执行紧跟在后面的语句;如果结果为false,则不执行后面的语句。

if (m === 3)
  m = m + 1;
                            //其中===表示严格等于 意思为 数值 和 类型 必须全部一样

                            // == 表示 只需要数值相等就OK
if (m === 3) {
  m += 1;
}


var x = 1;
var y = 2;
if (x == y) {
  console.log(x);
}

如上述代码第一条 m===3 就是表达式 当m等于三时才会执行m+1

第二条代码是将代码块与条件语句结合起来 ,如果后面只执行单条语句可以不加代码块。如果想执行多个语句,必须在if的条件判断之后,加上码块。

在书写条件语句时必须要将变量放在等号左边;如果在右边就会报错。

if (x = 2)  // 不报错
if (2 = x)  // 报错

if...else 结构

if代码块后面,还可以跟一个else代码块,表示不满足条件时,所要执行的代码。

if (m == 1) {
  console.log(m)
} else {
  console.log("不满足条件时")
}

以上代码中当m=1时 输出m;当m不等于1时,会执行else中的语句,此时会输出“不满足条件”

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

对同一个变量进行多次判断时,多个if...else语句可以连写在一起。

switch 结构

switch 用于当多个 if..else 连续使用时 可以使用switch 比较方便。

switch (age) {
  case "15":
    //..
    break;
  case "18":
    // ...
    break;
  default:
    // ...
}

上面代码根据变量age的值,选择执行相应的case。如果所有case都不符合,则执行最后的default部分。

特别注意的是,每个case代码块内部的break语句不能少,否则就算判断成功也会接下去执行下一个case代码块,而不是跳出switch结构。如:

var x = 2;

switch (x) {
  case 1:
    console.log('x 等于1');
  case 2:
    console.log('x 等于2');
  default:
    console.log('x 等于其他值');
}

输出
// x等于1
// x等于2
// x等于其他值

上面代码中,case代码块之中没有break语句,导致不会跳出switch结构,而会一直执行下去。所以就会输出所有。

注意的是,switch语句后面的表达式,与case语句后面的表示式比较运行结果时,采用的是严格相等运算符(===),而不是相等运算符(==),这意味着比较时不会发生类型转换。

var x = 1;

switch (x) {
  case true:
    console.log('x 发生类型转换');
    break;
  default:
    console.log('x 没有发生类型转换');
}

// x 没有发生类型转换

此代码中 X=1 与 true 值虽然相等但类型不一样,所以执行default中的语句。

三元运算符 ?:

JS中三元运算符规则 : (条件) ? 表达式1 : 表达式2

var even = (n % 2 === 0) ? true : false;



var even;
if (n % 2 === 0) {
  msg = ture;
} else {
  msg = false;
}

这个三元运算符可以被视为if...else...的简写形式,如同上面代码。

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值