1.1 声明变量
- ECMAScript 变量是松散类型的,意思是变量可以用于保存任何类型的数据。每个变量只不过是一 个用于保存任意值的命名占位符。
- 有 3 个关键字可以声明变量:
var
、const
和let
。其中,var
在 ECMAScript 的所有版本中都可以使用,而cons
t 和let
只能在 ECMAScript 6 及更晚的版本中使用。
1.var 关键字
// 声明变量
var age; // 声明一个 名称为age 的变量
var age = 20; //ECMAScript 实现变量初始化,因此可以同时定义变量并设置它的值
var name='yuanchuan',
sex='nan',
age=30; //可以同时声明多个变量,中间用逗号隔开
- var 是一个 JS关键字,用来声明变量( variable 变量的意思 )。使用该关键字声明变量后,计算机会自动为变量分配内存空间,不需要程序员管
- age 是开发者自己定义的变量名,我们须要通过变量名来访问内存中分配的空间
- 变量声明时可以用逗号隔开,来声明多个变量
1.2 更新变量
当一个变量获得一个新的赋值,新的值会将旧的值给覆盖掉
var p1=10 ;
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 种简单数据类型(也称为原始类型):
- Undefined :表示值未定义
- Null:表示为空
- Boolean:表示为布尔值
- Number :表示为数值
- String :表示为字符串
- Symbol :表示为符号
- Symbol(符号)是 ECMAScript 6 新增的。还有一种复杂数据类型叫 Object(对 象)
只有 7 种数据类型似乎不足以表示全部数据。但 ECMAScript 的数 据类型很灵活,一种数据类型可以当作多种数据类型来使用。
数字型 Number
在
JavaScript
中数字型可以保存整数和浮点数var num = 100;
var Num = 100.111111
isNaN
在转换时判断值是否为数字型,如果是,返回false,如果不是,返回true
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
- undefined表示一个变量没有被声明,或者被声明了但没有被赋值
- null是一个表示“没有值”的值
- Javascript将未赋值的变量默认值设为undefined
- Javascript从来不会将变量设为null。它是用来让程序员表明某个用var声明的变量时没有值的。
- undefined不是一个有效的JSON,而null是
- undefined的类型(typeof)是undefined
null的类型(typeof)是object.
它们都是基本类型
- null === undefined // false
清除字符串前后的空格(兼容所有浏览器)
//考虑兼容性,如果不支持原生 trim(),则自定义一个trim() 方法
if (!String.prototype.trim) {
String.prototype.trim = function() {
return this.replace(/^\s+/, "").replace(/\s+$/,"");
}
}
// test the function
var str = " \t\n test string ".trim();
alert(str == "test string"); // alerts "true"