一、JS基础知识背景

1.1 弱类型脚本语言

脚本语言是:弥补编译语言的不足而存在的,作为补充语言,不用编译,解析一行执行一行
弱类型语言:简单理解定义一个变量,可以有多种数据类型。(var temp)

1.2 组成

ECMAScript(前身为欧洲计算机制造商协会):JavaScript的语法规范,它是JS语言的标准,规定了JS的编程语法和基础核心知识
DOM(Document Object Model 的简称):文档对象模型,提供给JS很多操作页面中元素的属性和方法。JavaScript有操作网页上元素的API
BOM(Browser Object Model 的简称):浏览器对象模型 ,提供了很多操作浏览器 的属性方法,而这些方法都存放在window浏览器对象上。JavaScript有操作浏览器部分功能的API

1.3 输出语句

1.3.1 Alert() 弹出警示框

完整的写法 : window.alert(“执行语句”);
简单写法:Alert(“123”);
Window 对象是窗口,一般情况是可以省略的。 关于window对象后面讲。

1.3.2 Console 控制台输出

一般用于测试用。 因为在console中显示,一般用户不会发现。

使用代码 作用
console.log() 控制台输出,普通输出语句
console.warn() 控制台警示
console.error(); 错误提示

1.3.3 document.write() 文档打印输出

通过document.write()向文档书写内容,直接在文档中显示。

1.4 Js 的书写位置

Js 的书写位置非常的自由。

1.4.1 内嵌式

<script type=”text/javascript”> </script> 可以写在任何一个地方,但是因为JavaScript的执行顺序是按照在HTML文件中出现的顺序依次执行,如果需要在HTML文件执行函数或者全局变量,最好将其放在HTML的头部中。

1.4.2 外链式

这对标记之间不能写任何的东西。

1.4.3 行内式

作为某个元素的事件属性值或者是超链接的href属性值,直接在属性值中写js代码。

<head>
<script>
function fun(){
alert(1121313);
}
</script>
</head>
<body>
<div style="color:red;">123</div>//这是css的行内式
<button onclick="alert('你好吗')">点击我</button>
<button onclick="fun();">欢迎</button>
</body>
<a href=”javascript:;”></a>
<a href=”javascript:void(0);”></a>

二、数据类型

Javascript的数据类型按大类分为:简单数据类型(值类型)、复杂数据类型(引用类型)
包括5种简单的数据类型,与一种较为复杂的数据类型。

由于js中的变量是松散类型的,所以它提供了一种检测当前变量的数据类型的方法,也就是typeof关键字.
通过typeof关键字,对这5种数据类型会返回下面的值(以字符串形式显示)

类型 typeof的结果
boolean Boolean
string String
number Number
object/null Object
undefined Undefined

需要注意的是typeof null返回为object,因为特殊值null被认为是一个空的对象引用。

2.1 简单数据类型(值类型)

2.1.1 数值型(number)

该类型的表示方法有两种形式,第一种是整数,第二种为浮点数

整数可以通过十进制,八进制,十六进制的字面值来表示。

var intNum=55;//十进制
var octalNum=070;//八进制数,第一位必须是0,解析为56
var octalNum=079;//无效的8进制数,9超过了8进制数的范围,解析为79
var hexNum=0xA;//十六进制数,前两位必须是0x,后跟16进制数字(09及AF)

浮点数
1、该数值中必须包含一个小数点,且小数点后必须有一位数字,如果小数点后只有零,则该小数会被转化为整数。
2、浮点数所占据的内存空间是整数的两倍。
3、对极大极小的浮点数采用e表示法。

var floatNum=3.2e7;//3.2×10(7次幂)
var floatNum=3.2e-7;//3.2×10(-7次幂)

特殊值:

  • NaN

NaN代表Not a Number当一个Undefined表达式的结果为数值型数据时,该数值型就是NaN值
NaN是唯一一个不能和自身做比较的值

1、即非数值,是一个特殊的值,这个数值用于表示一个本来要返回数值的操作数,未返回数值的情况。比如任何数值除以0,本是不符合规范的,js里,这样的操作返回NaN(但是实际上,只有0除以0时返回NaN,其他则无穷值)。
2、NaN有两个不同寻常的特点:任何涉及NaN的操作都会返回NaN,NaN值与任何值都不相等,包括本身
3、isNaN()函数,这个函数可以判断,传递的参数是否“不是数值”,这里涉及数值转换的问题,(后面具体写)例如“10”这个字符串就可以转换为10,但是“blue”这个字符串则无法转换为数字,所以isNaN(“blue”)==true

  • Infinity无穷大

当一个数值或数值表达式的值超出了可表示的最大值的范围,将被赋值为Infinity。可以有无穷大Infinity,也可以有无穷小-Infinity,JavaScript中的数值包含整数和浮点数,所有数值都以双精度浮点型来表示。
双精度浮点数可以表示-2的53次方到2的53次方的整数,也可以表示为正负1.7976的10的308次方的最大值和正负2.2250乘以10的-308次方的浮点数如1.79e309和-1.79e309。

2.1.2 字符型 (string)

字符串类型是最熟悉不过的啦,至于用单引号,还是双引号,在js中还是没有差别的。记得成对出现。
var firstName=’zakas’;
字符串中一些特殊的字面量,即转义序列。
如果两个变量都是字符串,实现拼接,只要在前一个后面添加后一个字符串。(+与-情况不同,详情参考数据转换)
toString()函数,每个值都有,但是null与undefined没有。一般情况下使用这个函数时,没有必要传递参数,但是调用数值的 toString()方法时,可以传递基数,默认传递的是10,代表十进制。
String()函数可以将任何类型的值转换为字符串,包括null转换为’null’、undefined转换为’undefined’。

2.1.3 boolean

即布尔类型,该类型有两个值:true false
Bloolean()函数,可以将其他类型的值转换为布尔类型
转换规则

2.1.4 null

null类型的默认值是null,是表示一个空对象引用。
js高级程序上有讲到,undefined类型是派生自null的,

console.log(undefined == null); //true

不严格的说二者都是指没有明确赋值的类型,但是细分之后,undefined类型,被用来形容未经初始化的变量,null类型被用来形容空对象引用。
null表示空值,表示什么都没有,相当于一个占位符。
null和undefined的区别就是undefined表示变量未被赋值,而null表示变量被赋予了一个空值
所以,如果定义的变量准备在将来用于保存对象(即复杂的数据类型object),那么就该将该变量初始化为null
当一个变量声明后,未初始化,则该值为undefined,如果这个值是为了保存对象,则修改其默认初始化的值,改为null。 所以当检测其类型时,会显示类型为object。

var car=null;
console.log('car的类型为:'+typeof car)

2.1.5 undefined

在使用var声明变量,但未对其加以初始化时,这个变量的类型就是undefined,且其默认初始化值为undefined。
对未声明与初始化的变量,直接使用,那么这个变量的类型也是undefined,但是没有默认初始化值,直接输出报错。

var message;
console.log('已经声明但未初始化的变量message的类型是:' +typeof message)
console.log("试着输出已经声明但未初始化的变量message的值是"+message)
console.log('未声明,也未初始化的变量age的类型是:'+ typeof age )
console.log("试着输出既没有声明也没有初始化的age"+age)//无法输出,报错

2.2 复杂数据类型(引用类型)

2.2.1 object

该类型实例化的对象,是一组数据和功能(函数)的集合。
实例化对象的过程有两种,一种是通过new操作符,一种是通过对象字面量表示法。
object类型是最基本的类型,我们可以在其基础上继承出更多的类型,像我们知道的Array()、Date()、还有有意思的function()类型,都是从object继承的,而且这些类型都在程序员使用前被默认设置了属性和方法,供程序员调用。
而以上类型又有一个笼统的称呼为引用类型。为什么是引用类型呢?

var obj=new Object();

在学习C的时候,知道“ int a; int &ra=a;”,所以ra是a的引用,ra的类型为引用类型,系统并不为引用类型分配内存空间。
但是,js所指的引用类型,在《js高级程序设计》这本书里,也确实是这样的概念,obj只是引用类型,是堆内存中一个对象的别称,本身并不占用内存。

三、 数据类型转换

在js中,数据类型转换分为显式数据类型转换和隐式数据类型转换。
有三个函数可以显示地把非数值转换为数值:Number(),parseInt(),parseFloat()。第一个可以用于任何数据类型,后两个,则专门用于把字符串转化为数值。这三个函数对于同样的输入有不同的效果。

3.1 - 显示转换

转数字
(1)Number转换:

var a = “123”;
a = Number(a);
console.log(typeof a);

注意:
1. 如果转换的内容本身就是一个数值类型的字符串,那么将来在转换的时候会返回自己。
2 .如果转换的内容本身不是一个数值类型的字符串,那么在转换的时候结果是NaN.
3 .如果要转换的内容是空的字符串,那以转换的结果是0.


(2)parseInt():

 var a = “123”;
a = parseInt(a);

注意:
a) 忽略字符串前面的空格,直至找到第一个非空字符,还会将数字后面的非数字的字符串去掉。
b) 如果第一个字符不是数字符号或者负号,返回NaN
c) 会将小数取整。(向下取整)


(3)parseFloat();//浮点数(小数)

与parseInt一样,唯一区别是parseFloat可以保留小数。

转字符串
可以将其它的数据类型转成字符串。
(1)String():

var a = 123;
a = String(a);
console.log(typeof a+" "+a)


(2)toString()的方法来进行转换(包装类)。

var a = 123;
a = a.toString();
//undefined,null不能用toString。


转boolean类型:

可以将其它类型转为boolean值:

(1)Boolean():

代码:

 var a =”true”;
a = Boolean(a);

注意:在进行boolean转换的时候所有的内容在转换以后结果都是true,除了:false、”“(空字符串)、0、NaN、undefined。

3.2 - 隐式转换

转number:

var a = “123”;
a = +a;

加减乘除以及最余都可以让字符串隐式转换成number.

转string:

var a = 123;
a = a + “”;

转boolean:
!!一般用来将后面的表达式强制转换为布尔类型的数据(boolean),也就是只能是true或者false;

对null与undefined等其他用隐式转换的值,用!操作符时都会产生true的结果,所以用两个感叹号的作用就在于将这些值转换为“等价”的布尔值;

var a = 123;
a = !!a;
console.log(typeof a+" "+a);

四、操作符

4.1 操作符种类

一、算数运算符(+—*/…)
a) 一元运算符:正号、负号、++、–、平方等一个变量就能运算
b) 二元运算符:+-*/%等两个变量才能运算
c) 三元运算符: 值1?值2:值3;
二、逻辑运算符( ||&& ! )(或且非)
三、比较运算符(<、>、==、>=…)
四、赋值运算符(=、+=、-=、*=、/=、%=)

4.2 优先级

1 ()
2 !、-(负数)、++、– (正数省略+)(一元运算)
3 *、/、%
4 +、- (加,减)(二元运算)
5 <、<=、<、>= (一级逻辑运算)
6 ==、!=、===、!==、 (二级逻辑运算)
7 && (三级级逻辑运算)
8 ||
9?: (三元运算)
10 =、+=、-=、*=、/=、%= (赋值运算)

4.3 &&和||运算

与java类似

&&链接两个boolean类型,有一个是false结果就是false。
链接值不是布尔类型时,按照成布尔类型计算,结果本身不变。(非布尔)
例子: 1 = 2&&1; 0 = 0 && 1; 都是true取后面,都是false取前面。
||链接两个boolean类型,有一个是true结果就是true。
链接值不是布尔类型时,按照成布尔类型计算,结果本身不变。(非布尔)
例子: 2= 2||1; 1 = 0 || 1; 都是true取前面,都是false取后面。

五、 流程控制

1、顺序结构(程序正常执行流程从上往下,从左往右)(不用研究)
  赋值运算时为从右往左执行,且左侧为属性或变量,不取值!!!
2、选择结构
  a) If语句
  b) Switch语句
3、循环结构
  a) for循环
  b) while循环
  c) do…while循环

javaScript--进阶1--数据类型、操作符的更多相关文章

  1. JavaScript 中的数据类型

    Javascript中的数据类型有以下几种情况: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Function,Date,Ar ...

  2. 4、JavaScript进阶篇①——基础语法

    一.认识JS 你知道吗,Web前端开发师需要掌握什么技术?也许你已经了解HTML标记(也称为结构),知道了CSS样式(也称为表示),会使用HTML+CSS创建一个漂亮的页面,但这还不够,它只是静态页面 ...

  3. javaScript中的数据类型

    一.综述 javaScript中的数据类型分为两类: 简单类型:Boolean,Number,String 引用类型:Object 其他:undefined代表变量没有初始化,null代表引用类型为空 ...

  4. Javascript中的数据类型之旅

    虽然Javascript是弱类型语言,但是,它也有自己的几种数据类型,分别是:Number.String.Boolean.Object.Udefined.Null.其中,Object属于复杂数据类型, ...

  5. 【译】Javascript中的数据类型

    这篇文章通过四种方式获取Javascript中的数据类型:通过隐藏的内置[[Class]]属性:通过typeof运算符:通过instanceof运算符:通过函数Array.isArray().我们也会 ...

  6. JavaScript进阶(一)

     OK接下来,我们再次梳理一遍js并且提高一个等级. 众所周知,web前端开发者需要了解html和css,会只用html和css创建一个漂亮的页 面,但是这肯定是不够的,因为它只是一个静态的页面,我们 ...

  7. 细说 JavaScript 七种数据类型

    在 JavaScript 规范中,共定义了七种数据类型,分为 “基本类型” 和 “引用类型” 两大类,如下所示: 基本类型:String.Number.Boolean.Symbol.Undefined ...

  8. 为什么不要在 JavaScript 中使用位操作符?

    如果你的第一门编程语言不是 JavaScript,而是 C++ 或 Java,那么一开始你大概会看不惯 JavaScript 的数字类型.在 JavaScript 中的数字类型是不区分什么 Int,F ...

  9. JavaScript进阶系列03,通过硬编码、工厂模式、构造函数创建JavaScript对象

    本篇体验通过硬编码.工厂模式.构造函数来创建JavaScript对象. □ 通过硬编码创建JavaScript对象 当需要创建一个JavaScript对象时,我们可能这样写: var person = ...

  10. javascript 中检测数据类型的方法

    typeof 检测数据类型 javascript 中检测数据类型有好几种,其中最简单的一种是 typeof 方式.typeof 方法返回的结果是一个字符串.typeof 的用法如下: typeof v ...

随机推荐

  1. Linux/Android——input系统之 kernel层 与 frameworks层交互 (五)【转】

    本文转载自:http://blog.csdn.net/jscese/article/details/42291149 之前的四篇博文记录的都是linux中的input体系相关的东西,最底层以我调试的u ...

  2. Tensorflow学习笔记——占位符和feed_dict(二)

    创建了各种形式的常量和变量后,但TensorFlow 同样还支持占位符.占位符并没有初始值,它只会分配必要的内存.在会话中,占位符可以使用 feed_dict 馈送数据. feed_dict是一个字典 ...

  3. luogu 1083 借教室

    题目大意: 有一些教室 我们需要处理接下来n天的借教室信息 其中第i天学校有ri个教室可供租借 共有m份订单 每份订单用三个正整数描述 分别为dj sj tj 表示从第sj天到第tj天租借教室 每天需 ...

  4. js实现IOS上删除app时颤抖动画j函数

    欢迎提供更好的方法! <!--http://www.cnblogs.com/webzhangnan/p/3244920.html --> <html> <head> ...

  5. Web安全总结摘录

    借助刚才看到的文章,回顾一下常见的Web安全问题:XSS.CSRF.SQL注入漏洞. 一.XSS XSS (Cross Site Script),跨站脚本攻击,因为缩写和 CSS (Cascading ...

  6. E20171108-hm

    breadcrumb  n. 面包屑:面包心; 2.面包的松软(或柔软)部分;                    n.  网页导航区(a -> b -> c)

  7. Nginx(二) 反向代理&负载均衡

    1.反向代理 当我们请求一个网站时,nginx会决定由哪台服务器提供服务,就是反向代理. nginx只做请求的转发,后台有多个tomcat服务器提供服务,nginx的功能就是把请求转发给后面的服务器, ...

  8. JavaScript编程艺术-第7章代码汇总(2)

    [7.4节] 重回“JavaScript美术馆”代码 ***亲测可用*** HTML: JS:

  9. fiddler不同代理模式的区别

    Fiddler有不同的代理模式,分为以下两种: 流模式(Streaming)和缓冲模式(Buffering). 流模式可以理解为一种实时通信的模式,有请求就有返回,也就是实时返回. 缓冲模式是等所有请 ...

  10. shell set理解

    在spark bin下面load-spark-env.sh脚本里,有以下语句: if [ -f "${user_conf_dir}/spark-env.sh" ]; then # ...