前奏:在HTML中使用JavaScript

1_推荐src引用外部JavaScript文件,方便管理与维护,标签位置在页面最下面,使浏览器更优先加载页面内容。

2_HTML页面需要有标准的文档类型申明DOCTYPE,否则会触发混杂模式,页面非常容易出错。

3_考虑禁用JavaScript的场景。

<body> 

...

//当浏览器不支持javascript或被禁用时,会呈现<noscript>标签内的内容。
<noscript>
<p>本页面需要浏览器支持JavaScript.</p>
</noscript>
</body>

        1. 基本语法

1.  ECMAScript中的一切(变量,函数名和操作符)都区分大小写。

2.  标识符命名: 首字符必须字母,下划线或$美元符号,数字不能在第一个。(关键字和保留字不能作为标识符)

3.  严格模式 “use strict” 定义了一种要求更高的解析和执行模型

function doSomething(){
"use strict"
//函数体
}

       2. 数据类型

数据类型分为基本类型和复合类型。

变量:变量在本质上就是命名的内存空间。

变量的数据类型:就为上面提供的6种数据类型,不过变量的数据类型是动态的,可以在运行时改变变量的数据类型。

变量类型:值类型和引用类型两种,当变量的数据类型是简单数据类型时,变量类型就是值类型,当变量的数据类型是对象类型时,变量类型就是引用类型。

值类型的变量存储的就是变量值本身,引用类型的变量存储的是一个指向变量值的指针(地址)。

基本数据类型:number,boolean 、string 、null和 undifined。

number 整型或浮点型
boolean 布尔类型,true或false (注意区分大小写,必须都为小写时才是)
string 字符串,单双引号都可以
null 表示一个空对象指针,
undefined 变量申明未定义时为undefined,
object 数据和功能的集合

number类型

1. 八进制在严格模式下无效,十六进制前两位必须为0x,计算式都将转换为十进制

2. 取值范围,使用全局isFinite()函数判断是否超出范围,如果在范围内则为true,如果在范围外则为false.

Number.MAX_VALUE; /* 最大数值(JS 可以表示的) */
Number.MIN_VALUE; /* 最小数值(JS 可以表示的) */
Number.NEGATIVE_INFINITY; /* 负无穷大,值为-Infinity */
Number.POSITIVE_INFINITY; /* 无穷大 值为Infinity */

3. NaN和isNaN()

NaN是number类型,但不是数字,一旦程序中出现了NaN,说明出现了问题,

NaN的布尔属性为false,NaN和任何值都不相等,包括NaN本身。

任何涉及NaN的操作都会返回NaN。

isNaN()

里面的数据首先通过number()方法转换,

如果能够转为数字,则isNaN()为 false。

如果不能转为数字,则isNaN()为true。

4.数值转换

  1. Number()函数:将数据整体转换成Number类型,和使用一元加操作符(+)作用相同,建议使用 + 操作符,比较简单。 直接加一个空字符串。

  2. parseInt()函数:解析整数,从左往右,遇到非数字即停止,可以传入数据和进制,如parseInt('070',8)输出10进制的56。
  3. parseFloat()函数:解析浮点数,从左往右,会识别第一个小数点,只能接受一个参数,需要注意的是,如果被解析的数据结果是整数,会直接返回整数。

boolean类型

Boolean类型只有:true和false。注意区分大小写,其它形式的都不是,例如True和False.

1. 任何一种数据类型的值都能转换为与其相对应的Boolean值,转换方式主要有三种:

  显示转换:转型函数Boolean()

隐式转换,比如条件语句if

2.在转换为数值时,true和false分别转换为1和0,转换为字符串时,分别为'true'和'false'。

3.Boolean类型的true和false,使用typeof时,均返回字符串'boolean'。

string类型

1.隐式转换,任何一个数值与字符串相加,都会将其使用String()转换成字符串,然后将两个字符串合并。

2.显示转换String(),

3.字符串使用反斜杠“\”来转义,常见的转义字符:

字面量 含义 字面量 含义 字面量 含义
\n 换行 \t 制表 \b 空格
\r 回车 \f 进制 \\ 反斜杠
\’ 单引号 \” 双引号    
\xnn 以十六进制代码nn表示的一个字符 \unnnn 以十六进制代码nnnn表示的一个Unicode字符    

null和undefined区别

 

null

undefined

表示 空对象指针 尚未定义的变量
typeof运算结果 object undefined
  undefined派生null,使用==判断为true undefined派生null,使用==判断为true
  如果定义变量准备在将来保存对象,
那么最好将变量初始化为null.
无论申明情况下后没有必要将一个变量显示设置为undefined.

这五种基本数据类型可以直接操作保存在变量中的实际值

基本数据类型都保存在内存中的栈区。

引用(复合)数据类:javascript引用数据类型是保存在堆内存中,JavaScript不允许直接访问堆内存空间中的位置和操作堆内存空间,只能通过操作对象在栈内存中的引用地址。

所以引用类型的数据,在栈内存中保存的实际上是对象在堆内存中的引用地址。通过这个引用地址可以快速查找到保存在堆内存中的对象。

注意:如果obj b重新赋值操作时, obj a指向原本的对象不变,obj b指向新的对象,赋值和复制操作不一样。

引用类型是可以添加属性,基本类型虽然也可以添加属性,也不会报错,但是却无法访问

JavaScript-基本语法和数据类型的更多相关文章

  1. JavaScript的语法、数据类型、基本算数和逻辑运算操作

    str.toString() 可以把字符串.数值.布尔值.对象转为字符串 String(str) 任何数值强制转换为字符串类型 <!DOCTYPE html> <html lang= ...

  2. 02JavaScript基础语法及数据类型

    JavaScript基础语法及数据类型 2.1数据类型 2.1.1字符串(String) 用单引号或双引号括起来的零个或多个单一的字符所组成. 2.1.2数值(Number) 包含整数或浮点数. 2. ...

  3. javascript基础语法备忘录-变量和数据类型

    //javascript基础语法备忘录-变量和数据类型 // 定义变量使用var关键字 后面跟变量名,不要使用eval 和arguments为变量名 var message = "hi&qu ...

  4. JavaScript 基本语法 -- 数据类型 & 变量

    JavaScript都有哪些数据类型呢? 在JavaScript里面,数据类型分为两类:原始类型(primitive type)和对象类型(object type) 1. 原始类型(我的理解,不可分割 ...

  5. JavaScript基本语法(一)

    前段时间学习了HTML和CSS,也实战了一些结构较简单的项目.在还没运用到JS的知识时,做出来的效果总觉得少了些什么.虽然总体布局与一些基本的特效,也能用HTML+CSS就能完成.但如今开始进入Jav ...

  6. javascript运算符语法概述

    × 目录 [1]个数 [2]优先级 [3]结合性[4]类型[5]规则表 前面的话 javascript中的运算符大多由标点符号表示,少数由关键字表示,它们的语法言简意赅,它们的数量却着实不少.运算符始 ...

  7. javascript基础语法——词法结构

    × 目录 [1]java [2]定义 [3]大小写[4]保留字[5]注释[6]空白[7]分号 前面的话 javascript是一门简单的语言,也是一门复杂的语言.说它简单,是因为学会使用它只需片刻功夫 ...

  8. 【repost】JavaScript 基本语法

    JavaScript 基本语法,JavaScript 引用类型, JavaScript 面向对象程序设计.函数表达式和异步编程 三篇笔记是对<JavaScript 高级程序设计>和 < ...

  9. 一、JavaScript概述 二、JavaScript的语法 三、JavaScript的内置对象

    一.JavaScript的概述###<1>JavaScript的概念 又称ECMAScript,和java没有任何关系 嵌入在HTML元素中的 被浏览器解释运行的 一种脚本语言. ###& ...

  10. Unit04: JavaScript 概述 、 JavaScript 基础语法 、 流程控制

    Unit04: JavaScript 概述 . JavaScript 基础语法 . 流程控制 my.js function f3() { alert("唐胜伟"); } demo1 ...

随机推荐

  1. 系统学习 Java IO (一)----输入流和输出流 InputStream/OutputStream

    目录:系统学习 Java IO ---- 目录,概览 InputStream 是Java IO API中所有输入流的父类. 表示有序的字节流,换句话说,可以将 InputStream 中的数据作为有序 ...

  2. springboot-redis-crda example

    springboot-redis-crda example 1. 从 https://github.com/XLuffyStory/springboot-redis-crdu 拿到源码之后,导入到ST ...

  3. 开源系统监控工具Nagios、Zabbix和Open-Falcon的功能特性汇总及优缺点比较

    Nagios Nagios 全名为(Nagios Ain’t Goona Insist on Saintood),最初项目名字是 NetSaint.它是一款免费的开源 IT 基础设施监控系统,其功能强 ...

  4. .NET分布式框架 | Orleans 知多少

    引言 公司物联网项目集成Orleans以支持高并发的分布式业务,对于Orleans也是第一次接触,本文就分享下个人对Orleans的理解. 这里先抛出自己的观点:Orleans 是一个支持有状态云生应 ...

  5. 从同步原语看非阻塞同步以及Java中的应用

    非阻塞同步:基于冲突检测的乐观并发策略,通俗讲就是先进行操作,如果没有其他线程争用共享数据,那操作就成功了,如果争用数据有冲突那就采用其他的补偿措施(最常见的就是不断重试直到成功),这种乐观的并发策略 ...

  6. POJ 1113:Wall(凸包)

    http://poj.org/problem?id=1113 Wall Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 346 ...

  7. 屏蔽谷歌浏览器"请停用以开发者模式运行的扩展程序"提示

    目标: 对于强迫症患者那是相当难受~~~ 解决方案: 1:进入chrome://extensions/ 右上角开启开发者模式 点击打包扩展程序: 2:扩展程序目录为选择插件(*.crx解压后)的根目录 ...

  8. 关于Keepalive的那些事

    服务端很多同学包括自己对keepalive理解不清晰,经常搞不清楚,TCP也有keepalive,HTTP也有keepalive,高可用也叫keepalive,经常混淆这几个概念.做下这几个概念的简述 ...

  9. Java 技术交流群,微信群

    专注Java相关技术:SSM.Spring全家桶.微服务.MySQL.集群.dubbo.分布式.中间件.Linux.网络.多线程.Jenkins.Nexus.Docker.ELK等等! 由于微信群限制 ...

  10. 基于IdentityServer4的OIDC实现单点登录(SSO)原理简析

    写着前面 IdentityServer4的学习断断续续,兜兜转转,走了不少弯路,也花了不少时间.可能是因为没有阅读源码,也没有特别系统的学习资料,相关文章很多园子里的大佬都有涉及,有系列文章,比如: ...