1.1 声明变量

  • ECMAScript 变量是松散类型的,意思是变量可以用于保存任何类型的数据。每个变量只不过是一 个用于保存任意值的命名占位符。
  • 有 3 个关键字可以声明变量:varconstlet。其中,var 在 ECMAScript 的所有版本中都可以使用,而 const 和 let只能在 ECMAScript 6 及更晚的版本中使用。

1.var 关键字

  1. // 声明变量
  2. var age; // 声明一个 名称为age 的变量
  3. var age = 20; //ECMAScript 实现变量初始化,因此可以同时定义变量并设置它的值
  4. var name='yuanchuan',
  5. sex='nan',
  6. age=30; //可以同时声明多个变量,中间用逗号隔开
  • var 是一个 JS关键字,用来声明变量( variable 变量的意思 )。使用该关键字声明变量后,计算机会自动为变量分配内存空间,不需要程序员管
  • age 是开发者自己定义的变量名,我们须要通过变量名来访问内存中分配的空间
  • 变量声明时可以用逗号隔开,来声明多个变量

1.2 更新变量

当一个变量获得一个新的赋值,新的值会将旧的值给覆盖掉

  1. var p1=10 ;
  2. p1=20; //20将10给覆盖

1.3 变量声明特殊情况

情况 说明 结果
var age ; console.log (age); 只声明 不赋值 undefined
console.log(age) 不声明 不赋值 直接使用 报错
age = 10; console.log (age); 不声明 只赋值 10

1.4 变量命名规范

  • 由字母(A-Za-z)、数字(0-9)、下划线(_)、美元符号( $ )组成,如:usrAge, num01, _name
  • 严格区分大小写
  • 不能以数字开头
  • 不能是关键字或者保留字(具体可以百度查询关键字和保留字)
  • 变量名必须有意义,建议以单词命名
  • 遵从驼峰命名法,即第一个单词首字母小写,其余单词首字母大写 ,例如myLikeName

1.5 数据类型

  • ECMAScript 有 6 种简单数据类型(也称为原始类型):
    1. - Undefined :表示值未定义
    2. - Null:表示为空
    3. - Boolean:表示为布尔值
    4. - Number :表示为数值
    5. - String :表示为字符串
    6. - Symbol :表示为符号
  • Symbol(符号)是 ECMAScript 6 新增的。还有一种复杂数据类型叫 Object(对 象)
  • 只有 7 种数据类型似乎不足以表示全部数据。但 ECMAScript 的数 据类型很灵活,一种数据类型可以当作多种数据类型来使用。

    数字型 Number

    JavaScript中数字型可以保存整数和浮点数

    var num = 100;
    var Num = 100.111111
    

    isNaN

    在转换时判断值是否为数字型,如果是,返回false,如果不是,返回true
    图片17.png

    NaN

  • 表示在进行值转换时,转换成数字显示为数字,无法转成数字显示NaN

  • 有一个特殊的数值叫 NaN,意思是“不是数值”(Not a Number),用于表示本来要返回数值的操作 失败了(而不是抛出错误)。比如,用 0 除任意数值在其他语言中通常都会导致错误,从而中止代码执 行。但在 ECMAScript 中,0、+0 或-0 相除会返回 NaN:
    console.log(0/0); // NaN 
    console.log(-0/+0); // NaN
    

字符串型 String

  • 字符串需要在值上加引号,因为 HTML 标签里面的属性使用的是双引号,JS 这里我们更推荐使用单引号。 ```javascript var name=’我是袁某’;
<a name="Jz4rg"></a>
### 字符串转义符
| 转义符 | 解释说明 |
| --- | --- |
| \\n | 换行符,n   是   newline   的意思 |
| \\ \\ | 斜杠   \\ |
| ' | '   单引号 |
| " | ”双引号 |
| \\t | tab  缩进 |
| \\b | 空格 ,b   是   blank  的意思 |

<a name="wu8VA"></a>
### 字符串长度
```javascript
var name='我是袁某';
alert(name.length) //通过在变量名后面加.length来输出字符长度此长度为4

字符串拼接

  • 多个字符串间用+来拼接,多种类型值之间的拼接为:字符串+任何类型=新的字符串型
  • 拼接前会将与字符串相加的任何类型转换成字符串型,再拼接成一个新的字符串

    //1.1 字符串 "相加"
    alert('hello' + ' ' + 'world'); // hello world
    //1.2 数值字符串 "相加"
    alert('100' + '100'); // 100100
    //1.3 数值字符串 + 数值
    alert('11' + 12);     // 1112
    
    console.log('袁某' + 48);           // 只要有字符就会相连 
    var age = 48;
    // console.log('袁某age岁');       // 输出为袁某age岁,多个值用加号拼接
    console.log('袁某' + age);          // 袁某48
    console.log('袁某' + age + '岁啦');  // 袁某48岁啦
    
  • 经常会将字符串和变量来拼接,变量可以很方便地修改里面的值

  • 变量是不能添加引号的,因为加引号的变量会变成字符串
  • 如果变量两侧都有字符串拼接,在变量两侧添加加号

字符串插值

模板字面量最常用的一个特性是支持字符串插值,也就是可以在一个连续定义中插入一个或多个 值。技术上讲,模板字面量不是字符串,而是一种特殊的 JavaScript 句法表达式,只不过求值后得到的 是字符串。模板字面量在定义时立即求值并转换为字符串实例,任何插入的变量也会从它们最接近的作 用域中取值。
字符串插值通过在${}中使用一个 JavaScript 表达式实现:

let value = 5; 
let exponent = 'second'; 
// 以前,字符串插值是这样实现的:
let interpolatedString = 
 value + ' to the ' + exponent + ' power is ' + (value * value); 
// 现在,可以用模板字面量这样实现:
let interpolatedTemplateLiteral = 
 `${ value } to the ${ exponent } power is ${ value * value }`; 
console.log(interpolatedString); // 5 to the second power is 25 
console.log(interpolatedTemplateLiteral); // 5 to the second power is 25

所有插入的值都会使用 toString()强制转型为字符串,而且任何 JavaScript 表达式都可以用于插 值。嵌套的模板字符串无须转义:

console.log(`Hello, ${ `World` }!`); // Hello, World! 
//将表达式转换为字符串时会调用 toString():
let foo = { toString: () => 'World' }; 
console.log(`Hello, ${ foo }!`); // Hello, World! 

//在插值表达式中可以调用函数和方法:
function capitalize(word) { 
 return `${ word[0].toUpperCase() }${ word.slice(1) }`; 
} 
console.log(`${ capitalize('hello') }, ${ capitalize('world') }!`); // Hello, World! 

//此外,模板也可以插入自己之前的值:
let value = ''; 
function append() { 
 value = `${value}abc` 
 console.log(value); 
} 
append(); // abc 
append(); // abcabc 
append(); // abcabcabc

布尔型 Boolean

布尔型只有两个值:true(数值为1)和false(数值为0)可以说输出1为对,输出0为错

console.log(true + 1);  // 2
console.log(false + 1); // 1

Underfined和Null

  • underfined 为声明后没有赋值的变量输出时显示的值
  • null为空值