《Javascript 高级程序设计(第三版)》笔记0x2 JavaScript基本概念(1)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/funkstill/article/details/84787172

目录

语法

变量

数据类型

    typeof:

    Undefined类型

     Null类型

    Boolean类型

    Number类型

    浮点数值

    数值范围 

扫描二维码关注公众号,回复: 4490464 查看本文章

    NaN

    数值转换

    String类型

      字符字面量

      字符串的特点

      转换为字符串

    Object类型


  • 语法

  1. 区分大小写
  2. 标识符:首字符为字母、下划线或美元符,惯用驼峰命名(首字母小写,其余单词首字母大写)
  3. 注释 
//单行注释
/*
*    多行
*/

     4. 严格模式(strict mode)

        严格模式是为 JavaScript 定义了一种不同的解析与执行模型。在严格模式下, ECMAScript 3 中的一些不确定的行为将得到处理,而且对某些不安全的操作也会抛出错误。

function doSomething(){
    "use strict";
    //函数体
}
  • 变量

        松散类型,可以用来保存任何类型的数据。

var message;
message = “hello world”;
var num=10;
//用 var 操作符定义的变量将成为定义该变量的作用域中的局部变量。

//可以像下面这样省略 var 操作符,从而创建一个全局变量
function test(){
    message = "hi"; // 全局变量
}
test();
alert(message); // "hi"

//可以使用一条语句定义多个变量
var message = "hi",
    found = false,
    age = 29;
  • 数据类型

        基本数据类型:Undefined、Null、Boolean、Number和 String

        复杂数据类型:Object(本质上是由一组无序的名值对组成的)

    typeof:

        检测给定变量的数据类型,返回值有:"undefined"、"boolean"、"string"、"number"、"object"、"function"。

var message = "some string";
alert(typeof message); // "string"
alert(typeof(message)); // "string"
alert(typeof 95); // "number"
//注意,typeof 是一个操作符而不是函数

    Undefined类型

        Undefined 类型只有一个值,即特殊的 undefined。

var message;
alert(message == undefined); //true

var message; // 这个变量声明之后默认取得了 undefined 值
// 下面这个变量并没有声明
// var age
alert(typeof message); // "undefined"
alert(typeof age); // "undefined"

     Null类型

        只有一个值的数据类型,这个特殊的值是 null,表示一个空对象指针

var car = null;
alert(typeof car); // "object"

//undefined 值是派生自 null 值的,因此 ECMA-262 规定对它们的相等性测试要返回 true:
alert(null == undefined); //true

    Boolean类型

        ECMAScript 中使用得最多的一种类型,有两个字面值: true 和 false(区分大小写)

    虽然 Boolean 类型的字面值只有两个,但 ECMAScript 中所有类型的值都有与这两个 Boolean 值等价的值。

数据类型及转换规则
数据类型 转换为true的值 转换为false的值
Boolean true false
String 任何非空字符串 ""(空字符串)
Number 任何非零数字值(包括无穷大) 0和NaN
Object 任何对象 null
Undefined not applicable undefined
//强制转换
var message = "Hello world!";
var messageAsBoolean = Boolean(message);
//自动转换
var message = "Hello world!";
if (message){
    alert("Value is true");
}

    Number类型

        使用 IEEE754 格式来表示整数和浮点数值

var intNum = 55; // 整数

var octalNum1 = 070; // 八进制的 56
var octalNum2 = 079; // 无效的八进制数值——解析为 79
var octalNum3 = 08; // 无效的八进制数值——解析为 8

var hexNum1 = 0xA; // 十六进制的 10
var hexNum2 = 0x1f; // 十六进制的 31
//在进行算术计算时,所有以八进制和十六进制表示的数值最终都将被转换成十进制数值。

    浮点数值

var floatNum1 = 1.1;
var floatNum2 = 0.1;
var floatNum3 = .1; // 有效,但不推荐

var floatNum1 = 1.; // 小数点后面没有数字——解析为 1
var floatNum2 = 10.0; // 整数——解析为 10

var floatNum = 3.125e7; // 等于 31250000

浮点数值的最高精度是 17 位小数,但在进行算术计算时其精确度远远不如整数。例如, 0.1 加 0.2的结果不是 0.3,而是 0.30000000000000004。

    数值范围 

        Number.MIN_VALUE 5e-324
        Number.MAX_VALUE 1.7976931348623157e+308
        -Infinity(负无穷)
        Infinity(正无穷) 

//判断是否无穷,是返回false
var result = Number.MAX_VALUE + Number.MAX_VALUE;
alert(isFinite(result)); //false

    NaN

        Not a Number

alert(isNaN(NaN)); //true,注意NaN不等于任何值,包括NaN
alert(isNaN(10)); //false( 10 是一个数值)
alert(isNaN("10")); //false(可以被转换成数值 10)
alert(isNaN("blue")); //true(不能转换成数值)
alert(isNaN(true)); //false(可以被转换成数值 1)

    数值转换

        Number()、 parseInt()和 parseFloat()。第一个函数,即转型函数 Number()可以用于任何数据类型,而另两个函数则专门用于把字符串转换成数值。

/*---------------------------Number()------------------------------------------------*/
var num1 = Number(true); //1

var num2 = Number(11); //11

var numVar = null;
var num3 = Number(numVar); //0

var num4 = Number(undefined);//NaN

var num5 = Number("001"); //1
var num6 = Number("1.1"); //1.1
var num7 = Number("0xa"); //10
var num8 = Number(""); //0
var num9 = Number("Hello world!"); //NaN
/*如果是对象,则调用对象的 valueOf()方法,然后依照前面的规则转换返回的值。如果转换的结果是 NaN,则调用对象的 toString()方法,
然后再次依照前面的规则转换返回的字符串值
*/
/*---------------------------parseInt()------------------------------------------------*/
var num1 = parseInt("1234blue"); // 1234
var num2 = parseInt(""); // NaN
var num3 = parseInt("0xA"); // 10(十六进制数)
var num4 = parseInt(22.5); // 22
var num5 = parseInt("070"); // 56(八进制数)
var num6 = parseInt("70"); // 70(十进制数)
var num7 = parseInt("0xf"); // 15(十六进制数)

//解决进制分歧
var num1 = parseInt("AF", 16); //175
var num2 = parseInt("AF"); //NaN

var num1 = parseInt("10", 2); //2 (按二进制解析)
var num2 = parseInt("10", 8); //8 (按八进制解析)
var num3 = parseInt("10", 10); //10 (按十进制解析)
var num4 = parseInt("10", 16); //16 (按十六进制解析)
/*---------------------------parseFloat()----------------------------------------------*/
var num1 = parseFloat("1234blue"); //1234 (整数)
var num2 = parseFloat("0xA"); //0
var num3 = parseFloat("22.5"); //22.5
var num4 = parseFloat("22.34.5"); //22.34
var num5 = parseFloat("0908.5"); //908.5
var num6 = parseFloat("3.125e7"); //31250000

    String类型

        String 类型用于表示由零或多个 16 位 Unicode 字符组成的字符序列,即字符串。

var firstName = "Nicholas";
var lastName = 'Zakas';

      字符字面量

字符字面量
字面量 含义
\n 换行
\t 制表
\b 空格
\r 回车
\f 进纸
\\ 斜杠
\' 单引号('),在用单引号表示的字符串中使用。例如: 'He said, \'hey.\''
\" 双引号("),在用双引号表示的字符串中使用。例如: "He said, \"hey.\""
\xnn 以十六进制代码nn表示的一个字符(其中n为0~F)。例如, \x41表示"A"
\unnnn 以十六进制代码nnnn表示的一个Unicode字符(其中n为0~F)。例如, \u03a3表示希腊字符Σ
var text = "This is the letter sigma: \u03a3.";
alert(text.length); // 输出 28

      字符串的特点

ECMAScript 中的字符串是不可变的,也就是说,字符串一旦创建,它们的值就不能改变。

var lang = "Java";
lang = lang + "Script";
/*首先创建一个能容纳 10 个字符的新字符串,然后在这个字符串中填充"Java"和"Script",
最后一步是销毁原来的字符串"Java"和字符串"Script"*/

      转换为字符串

var age = 11;
var ageAsString = age.toString(); // 字符串"11"
var found = true;
var foundAsString = found.toString(); // 字符串"true"

/*按不同进制数*/
var num = 10;
alert(num.toString()); // "10"
alert(num.toString(2)); // "1010"
alert(num.toString(8)); // "12"
alert(num.toString(10)); // "10"
alert(num.toString(16)); // "a"

var value1 = 10;
var value2 = true;
var value3 = null;
var value4;
alert(String(value1)); // "10"
alert(String(value2)); // "true"
alert(String(value3)); // "null"
alert(String(value4)); // "undefined"

    Object类型

ECMAScript 中的对象其实就是一组数据和功能的集合。对象可以通过执行 new 操作符后跟要创建的对象类型的名称来创建。Object 类型所具有的任何属性和方法也同样存在于更具体的对象中。

      Object 的每个实例都具有下列属性和方法

        constructor:保存着用于创建当前对象的函数。对于前面的例子而言,构造函数(constructor)就是 Object()。
        hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中(而不是在实例的原型中)是否存在。其中,作为参数的属性名(propertyName)必须以字符串形式指定(例如: o.hasOwnProperty("name"))。
        isPrototypeOf(object):用于检查传入的对象是否是传入对象的原型。
        propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用 for-in 语句来枚举。与 hasOwnProperty()方法一样,作为参数的属性名必须以字符串形式指定。
        toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应。
        toString():返回对象的字符串表示。
        valueOf():返回对象的字符串、数值或布尔值表示。通常与 toString()方法的返回值相同。

猜你喜欢

转载自blog.csdn.net/funkstill/article/details/84787172