Javascript学习笔记(三)基本概念

  本篇主要总结《Javascript高级程序设计(第三版)》第三章基本概念中的ECMAScript(以下简称ES)语言核心。

  ES推荐标识符命名采用驼峰式

  ES第五版引入了严格模式,严格模式需要在JS文件顶部或者函数内部第一行添加"use strict"这条编译指示开启。在严格模式下,很多JS中不确定的或者说不安全的操作将会报错。

  ES中变量用var跟变量名来声明,默认情况下赋值undefined。如果声明变量的同时不用var关键字的话,该变量将会被创建成为全局变量(不推荐这样做!)。ES中变量为松散类型,可以存放任意类型的值。

  ES中数据类型分为两种,一种是简单数据类型,一种是复杂数据类型。简单数据类型包括五种基本类型:Number,Boolean,String,Null和Undefined。复杂类型就一种——Object。判断一个变量是什么类型可以使用typeof操作符,注意 typeof null 返回object,因为null代表一个对象的空指针引用。还有一点,使用一个尚未定义的变量将会抛出错误,但是给定typeof一个尚未定义的变量名不会报错,会返回undefined。另外,undefined是派生自null值,所以null==undefined会返回true。

  针对Boolean类型,用的比较多的是强制转换函数Boolean(),下边有张表来总结各种数据类型的转换关系(事实上隐式转换也一样):

Boolean函数转换
数据类型 转换为true的值 转换为false的值
Boolean true false
String 非空字符串 ""
Number 非零数值,包括无穷大 0和NaN
Object 任何对象 null
Undefined 不适用 undefined

  对于Number类型,此处总结一下整数转小数和小数转整数的方法:

//小数转化整数

var num = 4.721;
Math.floor(num);//向下取整,4
Math.ceil(num);//向上取整,5
Math.round(num);//四舍五入,5
Math.round(num*10)/10;//保留一位小数4.7
Math.round(num*100)/100;//保留两位小数4.72
parseInt(num);//直接丢弃小数部分,4

//整数转小数
var num = 4;
num.toFixed(2);//保留几位小数,注意此函数输出为字符串"4.00"

  另外对于Number类型有个特殊的值NaN(Not a number),ES中任何数值除以0不会报错误,会返回NaN值。NaN有很多特性,任何无法返回确定数值的数学操作一般都会返回NaN值。NaN与任何值都不等,包括它自己,如果进行比大小也都返回false。ES中定义了一个isNaN()的函数来判断一个值是否为NaN,在调用之前,这个函数会首先尝试把传入值转为数值。

  关于Number的强制转换有三个函数:Number(),parseInt()和parseFloat()。Number()函数有几个需要注意的转化:首先Number值都返回的是十进制的数字,Number(null) 返回0,Number(undefined)返回NaN,Number("")返回0。parseInt()函数可以指定要转换的进制数,另外需要注意以下几个情况:parseInt("")会返回NaN,parseInt("1234blue")会返回1234。对于parseFloat()也有需要注意的,比如它会忽略第二个小数点,另外它不识别进制数,所以parseFloat("0xA")返回0。

  关于布尔操作符,首先对于!操作符,!null,!NaN,!undefined都返回true。对于&&和||操作符,执行短路操作,即如果第一个操作数能够决定最终结果则不会去运算第二个操作数。

  关于相等运算符,遵循规则如果运算符两边有数字的话,那么两边都转化为数字进行比较。但是其中有个特殊情况需要注意,那就是在比较相等性的时候,null和undefined不能转换为任何值,所以null == 0返回false。

  关于语句就总结一个switch语句,该语句执行的是全等操作,比较的时候并不会执行类型转换。

  关于函数,首先没有重载,其次是函数的参数列表并非必须的,只是为了提供方便,因为函数内部有一个arguments数组来维护传入的参数,arguments只与传入的参数产生关系,与定义的参数列表无关。

  

时间: 2024-11-04 16:46:50

Javascript学习笔记(三)基本概念的相关文章

JavaScript学习笔记三:基本概念(1)

1. JS中的一切(变量.函数名.操作符等)都区分大小写.--true是boolean值,而True只是标识符. 2. JS语句以分号结尾,但不是必需的,原因: a. 结尾没有分号有时会导致压缩错误. b. 加上分号在某些情况下会为解析器提供方便,增进代码的性能. 3. 不同的ECMAScript版本对关键字和保留字的定义不同,但最好在JS代码中永远都不用任何关键字和保留字,以便与将来的ECMAScript版本兼容. 4. ECMAScript的变量是松散类型的,就是一个变量没有特定的类型限制,

JavaScript学习笔记(三)——this、原型、javascript面向对象

一.this 在JavaScript中this表示:谁调用它,this就是谁. JavaScript是由对象组成的,一切皆为对象,万物皆为对象.this是一个动态的对象,根据调用的对象不同而发生变化,当然也可以使用call.apply修改this指向的对象.它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用 1.1.JavaScript中函数与方法的区分 在面向过程的语言中我们习惯把完成某个特定功能的代码块称为“函数”或“过程”,当然过程一般没有返回值.在面向对象语言中我们把对象的功能

JavaScript学习笔记三:JavaScript对象

一.前言 对象的基本概念:Javascript提供了多个内建对象,比如String.Data.Array等等.对象指的是带有属性和方法的特殊数据类型 创建对象:创建JavaScript对象主要有两种不同的方法:第一.定义创建对象的实例:第二,使用函数来定义对象,然后创建新的对象 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.

前端乱煮之javascript学习笔记三

1 DOM即为文档对象模型,在html页面加载完成后,浏览器会创建页面的文档对象模型,它看来像是一棵树,有根节点,以及其他的节点. 而通过可编程的对象模型,javascript可以获得创建动态HTML的能力.比如,javascript可以改变HTML所有的元素.可以改变这些元素的属性.可以改变这些元素的样式和能对该页面内的事件作出反应. 2 要想对页面内的元素进行操作,首先就要获得这个元素.通常有三种获得元素的方法,分别是 通过Id来获得元素: 通过标签来获得元素: 通关类名来获得元素: 3 通

javascript学习笔记(三) string对象中的正则表达式

1. search返回匹配到的位置(-1找不到) var str = 'html js' var pattern = /js/ str.search(pattern)    --------->5 2. Match str.match(pattern) --------['js'] /js/g -----> ["js", "js",,"js"] match vs exec match:非全局的情况下才会返回分组中匹配到的内容,全局匹配

JavaScript学习笔记【3】数组、函数、服务器端JavaScript概述

笔记来自<JavaScript权威指南(第六版)> 包含的内容: 数组 函数 服务器端JavaScript概述 数组 数组是动态的:根据需要它们会增长或缩减,并且在创建数组时无须声明一个固定的大小或在数组大小变化时无须重新分配空间. 数组可能是稀疏的:索引不一定要连续的,它们之间可以有空缺. 通常,数组的实现是经过优化的,用数字索引来访问数组元素一般来说比访问常规的对象属性要快很多. 数组继承自Array.prototype中的属性,它定义了一套丰富的数组操作方法. 如果省略数组直接量中的某个

Java程序猿的JavaScript学习笔记(1——理念)

计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript学习笔记(3--this/call/apply) Java程序猿的JavaScript学习笔记(4--this/闭包/getter/setter) Java程序猿的JavaScript学习笔记(5--prototype) Java程序猿的JavaScript学习笔记(6--面向对象模拟) Java程

javascript学习笔记---ECMAScript语法(引用类型)

引用类型通常叫做类(class). 本教程会讨论大量的 ECMAScript 预定义引用类型. 引用类型 引用类型通常叫做类(class),也就是说,遇到引用值,所处理的就是对象. 本教程会讨论大量的 ECMAScript 预定义引用类型. 从现在起,将重点讨论与已经讨论过的原始类型紧密相关的引用类型. 注意:从传统意义上来说,ECMAScript 并不真正具有类.事实上,除了说明不存在类,在 ECMA-262 中根本没有出现"类"这个词.ECMAScript 定义了"对象定

javascript学习笔记---ECMAScriptECMAScript 对象----定义类或对象

使用预定义对象只是面向对象语言的能力的一部分,它真正强大之处在于能够创建自己专用的类和对象. ECMAScript 拥有很多创建对象或类的方法. 原始的方式 因为对象的属性可以在对象创建后动态定义(后绑定),类似下面的代码: var oCar = new Object; oCar.color = "blue"; oCar.doors = 4; oCar.mpg = 25; oCar.showColor = function() { alert(this.color); };不过这里有一

加壳学习笔记(三)-简单的脱壳思路&amp;调试思路

首先一些windows的常用API: GetWindowTextA:以ASCII的形式的输入框 GetWindowTextW:以Unicaode宽字符的输入框 GetDlgItemTextA:以ASCII的形式的输入框 GetDlgItemTextW:以Unicaode宽字符的输入框 这些函数在使用的时候会有些参数提前入栈,如这函数要求的参数是字符串数目.还有大小写啦之类的东西,这些东西是要在调用该函数之前入栈,也就是依次push,就是说一般前面几个push接着一个call,那前面的push可能