《Javascript权威指南》类型、值、变量

变量

数据类型分为  原始类型  和  对象类型

原始类型包括数字、字符串和布尔值

null  和  undefined  分别表示格子特殊类型的唯一的成员

除此之外就是对象。对象(object)是属性的集合,每个属性由名值对组成

普通的javascript对象是“命名值”的无序集合。数组是特殊的对象,表示带编号的值的有序集合。

函数是具有与它相关联的可执行代码的对象,都是真值。   如果函数用来初始化(new运算符),一个新创建的对象,称为构造函数。每个构造函数定义了一类(class)对象————

由构造函数初始化的对象组成的集合,类可以看做是对象类型的子类型。

除了数组类、和函数类,还有日期类、正则类、和错误类。   数字、布尔值、null和undefined属于不可变类型。

数字

负号是一元求反运算符,并不是数字直接量语法的组成部分。

通过Math对象的属性定义的函数和常量实现复杂的算数运算

Math.pow(2,8)     2的8次幂   

Math.round(.6)            四舍五入   

Math.ceil(.6)             向上取整   

Math.floor(.6)            想下取整   

Math.abs(-5)              取绝对值   

Math.max(x,y,z)           返回最大值   

Math.min(x,y,z)           返回最小值   

Math.random()             生成一个大于等于0小于1的伪随机数   

Math.PI                   圆周率   

Math.E                    自然对数的底数   

Math.sqrt(3)              求平方根   

Math.pow(3,13)           3的立方根  

Math.sin(0)               三角函数   

Math.log(10)              10的自然对数   

Math.log(100)

Math.LN10   以10为底100的对数   

Math.exp(3)               e的三次幂  

下溢是当运算结果无限接近0并比javascript能表示的最小值还小的时候发生的情况。这时会返回0。当负数发生下溢时会返回负零、

零除以零的结果是非数字值,用NaN表示。无穷大除以无穷大、给任意负数开方运算或

算术运算符与不是数字或无法转换为数字的操作数一起使用时  都返回NaN

NaN不与任何值相等,包括它自身   当且仅当x=NaN时,x!=x成立

isNaN()检测参数是否是非数值;isFinite()参数不是NaN、Infinity或-Infinity时返回true

javascript采用二进制表示法,不能准确表示类似0.1的数字

var x = 0.3 - 0.2;      0.09999999999999998        

var y = 0.2 - 0.1;      0.1         

x == y;                 false     

Date构造函数用了创建表示日期和时间的对象

var then = new Date(2015, 3, 10);   

var now = new Date();                当前日期和时间   

var elapsed = now - then;            日期减法,计算时间间隔的毫秒数   

now.getFullYear();                   2015

now.getMonth();                      从0开始计算的月数   

now.getDate();                       从1开始计算的天数   

now.getDay();                        星期,0代表星期日   

now.getHovers();                     当前小时    

文本

转义字符

如果\后不符合转义字符,则忽略\

+用于字符串时表示连接

字符串的length属性表示其长度

布尔值

下列值会被转换为false

undefined null NaN 0 -0 ""  其他值都会转换成true

null 和 undefined

null是特殊的对象值,含义是非对象、

undefined表示变量没有初始化

包装对象

存取字符串、数字或布尔值的属性时创建的临时对象成为包装对象 读取它们的属性值时和对象一样,但给属性赋值时会忽略这个操作 只要引用了字符串的属性,javascript就会将字符串通过调用new String()的方法转换成对象,这个对象继承了字符串的方法。

var s = ‘test‘;    

s.len = 4;          //创建一个临时字符串对象,赋值后就销毁    

var t = s.len;    

alert(t);           //undefined

字符串、数字、布尔值的属性都是只读,不能给它们定义新属性

var s = ‘test‘;                    

var S = new String(‘test‘);    

alert(typeof(s));               //string    

alert(typeof(S));               //object    

alert(s==S);                    //true    

alert(s===S);                   //false

原始值(undefined null 数字 字符串 布尔值)是不可更改的,任何方法都无法更改原始值

通常将对象称为引用类型,对象的比较均是引用的比较,当且仅当它们引用同一个基对象时才相等

取得对象或数组的副本,需要显式复制

var a = [1, 2, 3];

var b = [];

for (var i = 0; i < a.length; i++) {    

b[i] = a[i];

}

比较两个独立的对象或数组,需要比较它们的属性或元素

function equalArrays(a, b) {    

if (a.length != b.length)

return false;    

for (var i = 0; i < a.length; i++) {

        if a[i] != b[i] return false;    

}

    return true;

}

类型转换

Boolean() Number() String() Object()

除了 null 和 undefined 外任何值都有 toString()方法

x + ""  //等价于String(x)

+x      //等价于Number(x)

!!x     //等价于Boolean(x)

Number类

toString()          可接受基数 以下方法都四舍五入

toFixed()           根据小数点后的位数将数字转换为字符串,不使用指数计数法

toExponential()     用指数计数法转换为字符串,小数点后位数由参数决定

toPrecision()       根据指定的有效数字位数将数字转换为字符串

parseInt()      只解析整数,跳过任意的前导空格,如果第一个非空格字符是非法的数字直接量,返回NaN,可以接收第二个参数作为基数

parseFloat()    解析整数和负数

parseInt(‘  44a4‘)  //44

parseInt(‘$11‘)     //NaN

parseInt(‘-5‘)      //-5

所有对象继承了两个转换方法:toString()和 valueOf()

toString()返回一个反映这个对象的字符串。 数组类将每个数组元素转换为一个字符串,并在元素之间添加逗号后合并成结果字符串 函数类返回这个函数的实现定义的表示方法

valueOf()一般返回对象本身,日期类会返回它的内部表示:1970年1月1日以来的毫秒数

      var a = function (){

        document.write(‘hh‘);

      };

       alert(typeof(a.valueOf()));  //function

      var a = new Date();

      alert(typeof(a.valueOf()));

+的其中一个操作数是对象,则会将其转换为原始值

var a = new Date();

typeof(a+1);          //string

typeof(a-1);          //number

函数作用域

变量在声明它们的函数体以及这个函数体嵌套的任意函数体内都是有定义的

    function text(o) {

        var i = 1;

        if (typeof o == "object") {

            var j = 0;

            for (var k = 0; k < 10; k++) {

                console.log(k);

            }

        }

        console.log(j);                     //0

        console.log(k);                     //10     }          //i j k在函数体内均有定义

变量提前:函数里声明的所有变量(不涉及赋值)都被“提前”到函数体的顶部

    var a = ‘aa‘;

    function f(o) {

        console.log(a);     //undefined

        var a = ‘bb‘;

        console.log(a);     //bb

    }

在函数体内局部变量覆盖了同名全局变量,但只有在程序执行到var语句时才被赋值,等价于Boolean

    function f(o) {

        var a;

        console.log(a);

        a = ‘bb‘;

        console.log(a);
     }

声明全局变量实际上是定义了全局对象的一个属性。使用var声明变量时这个变量无法通过delete删除

时间: 2024-10-13 12:47:43

《Javascript权威指南》类型、值、变量的相关文章

JavaScript权威指南第03章 类型、值和变量

类型.值和变量 数据类型分类: 原始类型(primitive type):数字 字符串 布尔值 null undefined 对象类型(object type): 对象是属性的集合,每个属性都由"名/值"对构成. javascript解释器有自己的内存管理机制,可以自动对内存进行垃圾回收. 3.1数字 javascript不区分浮点和整型,所有的数字都是按照浮点型处理. 3.1.1整型直接量 3.1.2浮点型直接量 3.1.3算数运算 3.1.4二进制浮点数和四舍五入错误 当进行小数进

JavaScript权威指南第03章 类型、值和变量(2)

题目链接:https://oj.leetcode.com/problems/set-matrix-zeroes/ Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. 一个个找肯定会超时,我们可以分别用一个行向量和一个列向量进行维护.这样O(m*n) 能出来 class Solution { public: void setZeroes(vector<vector

JavaScript类型&amp;值&amp;变量

正零VS负零 两个值几乎一模一样,除了作为除数之外: var zero = 0; // 正零 var negz = -0; // 负零 zero === negz; // true 1/zero === 1/negz; // false <JavaScript权威指南>p.37 undefined VS null undefined是变量未赋值前的默认值,表示未定义.typeof undefined = undefined. null是空对象引用,表示对象为空.typeof null = ob

JavaScript权威指南 - 函数

函数本身就是一段JavaScript代码,定义一次但可能被调用任意次.如果函数挂载在一个对象上,作为对象的一个属性,通常这种函数被称作对象的方法.用于初始化一个新创建的对象的函数被称作构造函数. 相对于其他面向对象语言,在JavaScript中的函数是特殊的,函数即是对象.JavaScript可以把函数赋值给变量,或者作为参数传递给其他函数,甚至可以给它们设置属性等. JavaScript的函数可以嵌套在其他函数中定义,这样定义的函数就可以访问它们外层函数中的任何变量.这也就是所谓的"闭包&qu

阅读:《javascript权威指南》(笔记)

判断是否为NaN类型:x!=x //true 当且仅当x为NaN时,x才不等于自身. isNaN()//ture 参数为NaN或则非数字值,则返回true.false可判是否为断数字和字符串数字(如:"3"): js数字精度值极其接近0.1,如:0.411 - 0.401,期待结果0.01,实际结果结果为0.009999999999999953:通过"\"符号连接字符串,拼接html字符串更简洁,更高效: parseInt和parseFloat参数若为字符串,则该字

《javascript权威指南》读书笔记——第一篇

<javascript权威指南>读书笔记--第一篇 金刚 javascript js javascript权威指南 由于最近想系统学习下javascript,所以开始在kindle上看这本书来补充下. 今天是今年的196天,由于我之前承诺过,每天分享读书笔记,只是之前分享的是大众读物,所以随手分享到kindle阅读群里了.但是现在读的是技术类书籍,分享到kindle读书群不太合适,所以还是以博客的形式分享.这样子,一个链接,大家感兴趣了就点开看看,不感兴趣了,就不点开. 其实这篇文章应该是昨天

JavaScript权威指南学习笔记之一

1.关于分号 javascript里面不强制使用分号来表示一行语句的结束,但是最好能够在写js之前,特别是在原有的js上面新增时,最好前置一个分号.避免这种情况发生:  2.JavaScript类型转换 3.关于=== ①如果类型不同则不等 ②null===null或undefined===undefined ③true===true或false===false ④NaN不等 ⑤0===0 0===-0 ⑥如果是同一个object,array,function则相等 4.关于== ①如果已经==

JavaScript权威指南笔记——第1部分

# <JavaScript权威指南>笔记--第1部分 说明: 印刷版:2012年4月第1版 2016年9月第17次印刷. 本书的风格和<Effective Java>很类似,推荐一下. 该笔记逆序记录的. ----------------------- ------<end>------ | node的helloworld程序: ```js //! program.js // 通过在命令行输入`node program.js`来运行,然后在浏览器中打开网址`127.0.

JavaScript 权威指南(4): JavaScript 的作用域和提升

JavaScript 权威指南(4): JavaScript 的作用域和提升 原文地址:http://dyy.im/4406.html 你知道下面的 JavaScript 程序执行时会输出什么值吗? var foo = 1; function bar() { if (!foo) { var foo = 10; } alert(foo); } bar(); 答案是“10”,吃惊吗?那么下面的可能会真的让你大吃一惊: var a = 1; function b() { a = 10; return;

读书笔记----JavaScript 权威指南(一)

0.前言 最近小编我刚刚结束上一段的工作,结果立马就马不停蹄的开始了新一轮的工作了,表示无辜,(o′?ェ?`o),程序猿真是个累死人不偿命的工作呀. 今天晚上看到同事新启封的 JavaScript 权威指南,心血来潮的想,如果我能把这个书里面的重点以及具体知识点梳理出来,那么后来的人是不是就能少走一些弯路呢? 抱着这个想法,于是就开始了今天晚上的读书之旅,更由于小编喜欢整理东西这个习惯,才有了此文. 真心希望看到这篇文章的你,能够感受到小编那深沉的爱!~ 1.JavaScript 语法核心 之