JavaScript基础(一)

在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新定义的。符号类型是唯一的并且是不可修改的。
对象可以通过new操作符后跟要创建的对象类型的名称来创建。而创建Object类型的示例并为其添加属性和(或)方法,就可以创建自定义对象,如下所示:
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" />

    推荐阅读