前奏:在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. AI行为树的工作原理

    很久没写博客了,最近在项目刚部署到测试服,需要进行压测,老大相当专业的用了行为树来组织压测机器人的代码,这段时间陆陆续续在网上看了不少关于行为树的文章,其中有一篇我觉得写得非常到位,它原文是英文,链接 ...

  2. springboot 2.X 在访问静态资源的的时候出现404的问题

    通过idea快速搭建一个springboot项目: springboot版本2.1.6 在网上看的资料,springboot静态资源访问如下: "classpath:/META‐INF/re ...

  3. 【粗略版】Linux deploy手机上创建自己的服务器

    偶尔看见了一篇安卓手机z安装linux的文章,正好自己有一个旧手机,心里有个大胆的想法. 简单来说,就是把旧手机安装linux然后装上容器,尝试部署一个简单项目,下面会记录下过程: 首先了解下这个软件 ...

  4. 3D echarts 点位报表展示

    一,准备工作1)获取Echarts 以下为官网推荐的几种获取 ECharts方式: 从官网下载界面选择你需要的版本下载,根据开发者功能和体积上的需求,我们提供了不同打包的下载,如果你在体积上没有要求, ...

  5. 如何正确选择挑选适合的VPS服务器

    就来讲讲,如何挑选适合你的VPS.基本过程就是:1.你使用VPS的用途:2.你需要的线路:3.你要选择的操作系统:4.你购买VPS的大概预算是多少. 一.用途方法,其实买VPS就是:建站.VPN使用. ...

  6. BFS(二):数的变换

    [例1]整数变换(POJ 3278 “Catch That Cow”) 给定两个整数a和b(0 ≤a,b≤100,000),要求把a变换到b.变换规则为:(1)当前数加1:(2)当前数减1:(3)当前 ...

  7. ZooKeeper入门(一)

    1 基本概念 1.1 什么是ZooKeeper zookeeper是为分布式应用所设计的高可用.高性能且一致的开源协调服务 1.2 Zookeeper的特点 顺序一致性 原子性 单一视图 可靠性 实时 ...

  8. myecliese加大内存

    加大内存代码 : -Xms512m -Xmx1024m -XX:PermSize=256M -XX:MaxPermSize=1024m

  9. scrapy基础知识之 scrapy 三种模拟登录策略:

    注意:模拟登陆时,必须保证settings.py里的 COOKIES_ENABLED (Cookies中间件) 处于开启状态 COOKIES_ENABLED = True或 # COOKIES_ENA ...

  10. Minimum Spanning Tree

    前言 说到最小生成树(Minimum Spanning Tree),首先要对以下的图论概念有所了解. 图 图(Graph)是表示物件与物件之间的关系的数学对象,是图论的基本研究对象.图的定义方式有两种 ...