在JavaScript中,变量是松散类型的,所谓松散类型就是可以用变量来保存任何类型的数据。换句哈说,每个变量仅仅是一个用户保存值的占位符而已。在JavaScript中定义变量使用var来声明一个变量,后面跟一个变量名,变量名必须是合法的标识符,包含:大小写字母,数组,下划线‘_’,美元符号‘$’,但不能以数字开头。
在上面提到,JavaScript中的变量是松散类型的,但是松散类型不是说JavaScript中没有数据类型,而意思是:我们在用"盒子"来存储信息时,不必规定这个”盒子“这能存储数字类型的信息,而是数字,字符串,日期等什么类型的信息都可以存储,但是数据本身是由数据类型的。
var name = 'Bob';
name = 10;
// 有效!但不推荐
var name = 'Bob';
var age = 16;
var stuNo = 0012323;
// 也可以这样定义
var name = 'Bob', age = 16, stuNo = 0012323;
- 了解JavaScript中的七种数据类型
JavaScript 是一种弱类型或者说动态语言。这意味着不用提前声明变量的类型,在程序运行过程中,类型会被自动确定。这也意味着可以使用同一个变量保存不同类型的数据:
var foo = 42;
// foo is a Number now
var foo = "bar";
// foo is a String now
var foo = true;
// foo is a Boolean now
6种原始类型:
- Boolean
- Null
- Undefined
- Number
- String
- JavaScript 字符串是不可更改的。这意味着字符串一旦被创建,就不能被修改。但是,可以基于对原始字符串的操作来创建新的字符串。
- 获取一个字符串的子串可通过选择个别字母或者使用String.substr()。
两个字符串的连接使用连接操作符 (+) 或者String.concat()。
- Symbol(在ES6中新定义,本节暂不讲解)
- 符号(Symbols)是ES6新定义的。符号类型是唯一的并且是不可修改的。
var o = new Object();
我们也可以通过下面的方式直接创建一个对象:
var person = { name: 'Bob', age: 20, gender: 'male' };
【JavaScript基础(一)】下面展示一下使用typeof的示例:
var message = 'some string';
alert(typeof message);
// "string"
alert(typeof(message));
// "string"
alert(typeof 95);
// number
null 和 undefined null表示"没有对象",即该处不应该有值。典型用法是:
(1) 作为函数的参数,表示该函数的参数不是对象。
(2) 作为对象原型链的终点。
Object.getPrototypeOf(Object.prototype)
// null
undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。典型用法是:
(1)变量被声明了,但没有赋值时,就等于undefined。
(2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。
(3)对象没有赋值的属性,该属性的值为undefined。
(4)函数没有返回值时,默认返回undefined。
var i;
i // undefinedfunction f(x){console.log(x)}
f() // undefinedvaro = new Object();
o.p // undefinedvar x = f();
x // undefined
ECMAScript 规范认为,既然 null 和 undefined 的行为很相似,并且都表示 一个无效的值,那么它们所表示的内容也具有相似性,即有
undefined == null;
//true
不要试图通过转换数据类型来解释这个结论,因为:
Number(null);
// 0
Number(undefined);
// NaN
//在比较相等性之前,null 没有被转换为其他类型
null == 0 ;
//false
但 === 会返回 false ,因为全等操作 === 在比较相等性的时候,不会主动转换分项的数据类型,而两者又不属于同一种类型:
undefined === null;
//false,类型不相同
undefined !== null;
//true, 类型不相同
NaN NaN是一个值类型,同是也是一个数值.意思是Not A Number,这个都知道是什么意思.值比较特殊,特殊在于NaN是一个数字,是一个与任何数值都不相等的数字.
javascript:alert(typeof(NaN)); 可以完全证实,这是一个数字类型的值.也就是说NaN是当时转换时一种出错的策略,转成一个谁也不认识的数字而已.从这个角度上理解它是一个数字,可以理解成数学中的无穷大或是无穷小.但与数学中一个理论是相悖的,我们常说,无穷大加1等于无穷大是错误的.正是无空大加1不等于无穷大,所以无穷大也不等于它自己本身.所以数值NaN连自身都不会相等的.
而在javascript中NaN既然作为一个无穷大,那么它表示的就不再是一个值,而是一类值,所以有时可视NaN是一个类型.
正是这样的边缘问题,可以导致作如下测试是正确的:
javascript:alert(NaN+1); 结果是无穷大.
但唯一的是NaN是一个不确定数,所以NaN不能等于NaN.
这好比是randomise中的random,random +1 还是一个不确定的数值,但random不会等于random一样.两者的区别在于random能生成一个确定数,但本身不确定.而NaN生成的就是一个不确定数.
var x = 0;
function fun(){
console.log(x);
let x = 1;
x++;
}fun();
上述代码将会在console控制台中输出的结果是?(两个空格代表换行)
Uncaught ReferenceError: x is not defined
var x = 0;
function fun(){
console.log(x);
var x = 1;
x++;
}fun();
上述代码将会在console控制台中输出的结果是?(两个空格代表换行)
undefined
如何引用JavaScript
- 内部引用
通过HTML文档内的script标签加载JavaScript代码。示例如下:
="text/javascript">
document.write("Hello World!");
通过此方式就可以在当前页面中引入script标签中的JavaScript代码。
- 外部引用
也是使用HTML文档的script标签,但是要使用script标签的src属性,指向外部JavaScript文件的路径。示例如下:
="./main.js" />
推荐阅读
- putty + Xming windows 远程连接、打开Linux图形界面
- JavaScript字符串
- css调试
- Python|简单随机漫步实例
- 加载MNIST报错(Timeout Error [WinError 10060])