JavaScript基础

JS概念

  1. 脚本语言:依赖别的语言才能运行,js嵌套在html内才能运行。

  2. 跨平台:可以再不同平台上运行

  3. 支持面向对象

JS的组成

  1. ECMAScript:语法标准

  2. BOM:操作浏览器的标准

  3. DOM:操作html文档的标准

JS的注释

单行注释:

// js的单行注释是双斜杠

多行注释:

/*
js的多行注释:
开头是斜杠星号
结尾是星号斜杠
*/

JS的输出

1.以弹窗的形式显示

alert(123);

2.以文本的形式显示

document.write(123);

document.write是写在body里的所以可以再写的内容外面加标签,但是必须为字符串类型。

3.可以输入内容的弹窗

prompt(123);

由prompt接收的内容是字符串类型

这种弹窗通常在项目使用较少,项目中要提示用户输入内容的时候通常都会使用表单。

4.询问用户是否确认操作的弹窗

confirm(123);

5.浏览器控制台输出

console.log(123);

这种输出方式在开发过程中很常用,通常用于调试代码时,在浏览器的控制台查看调试结果,不会影响到整体项目的逻辑和效果。

注意:在js代码中,每行结束可以加分号,也可以不加分号,但是建议加上。

定义变量

语法:

var 变量名;

变量名由字母、数字、下划线、美元符号组成,不能用数字开头。
复合形式

var 变量1,变量2;

数据类型

i数据类型png

对象类型

object类型,在js中有3种表现形式,分别是:

  • null
  • 用[]定义的数据
  • 用{}定义的数据

undefind类型

当一个变量定义好了,但是没有给这个变量赋值,也就是没有给这个容器中放入数据,这个变量的默认值就是undefined,类型也是undefined。

检测数据类型可以用 typeof 例如:

console.log(typeof(-123456)); // 数字型
console.log(typeof("明天会更好")); // 字符串型
console.log(typeof(true)); // 布尔型
console.log(typeof(x)); // 布尔型
console.log(typeof([1,2,3])); // 对象
console.log(typeof({name:"张三",age:12})); // 对象
console.log(typeof(null)); // 对象

也可以用typeof x用空格隔开而不使用括号

不同进制的数字

var a = 010; // 8进制(以0开头)
var b = 0xA; // 16进制(以0x开头)
var c = 0xb; // 小写字母和大写字母都可以
console.log(a); // 8
console.log(b); // 10
console.log(c); // 11

科学计数法

//当一次数字很大的时候,可以用科学计数法来表示
var num = 3e+5;  //3乘以10的5次方
var num = 5e-3;//5乘以10的-3次方

数值范围

最小值:Number.MIN_VALUE
最大值:Number.MAX_VALUE
值得大小分别为:5e-324,1.7976931348623157e+308
无穷大:Infinity 1/0
无穷小:-Infinity

Not a Number(NaN)

例子:

    var a = 'abc';
    var b = 2;
    var c = a - b;
    console.log(c);

浏览器查看:


NaN

在js中,NaN用来表示一个非数字的特殊值,当发现无法进行运算时,js不会报错,而是会返回一个NaN。
注意

  • NaN的类型为number,表示一个非数字
  • NaN不等于任何值,包括自己本身

isNaN()

通过isNaN()来判断一个变量是不是一个数字,返回false值时,说明变量是一个数字。

var a = 123;
var b = "abc";
console.log(isNaN(a)); // false
console.log(isNaN(b)); // true

计算小数有误差

计算机中的小数在进行运算的时候,有时会碰到小数点精度不准确的现象。

原因

计算机内部所能识别的数据只有二进制,当我们进行10进制数字运算的时候,在计算机内部需要先将数据转为2进制,然后运算,再将结果转为10进制给出来。10进制的小数进行2进制转换的时候,根据转换规则,有些小数会进行无限死循环,最终在后面数字太多的时候只能四舍五入,所以其实最终并没有很精确的转为2进制,所以只能给出一个大概的值。有时候会有两个大概的值相加,在转换10进制的时候正好能转换了,也会计算的比较精准。

解决方法:

// 解决办法 : 
// 1.根据小数点后面的位数量 乘以对应的整数;
0.1 + 0.2  ==> (0.1*10+0.2*10) / 10 = 0.3
// 2.使用toFixed工具强制保留小数点后位数
var a = 0.1 + 0.2
console.log(a.toFixed(3)) // 0.300

转义符

给字符串中的引号转义,也就是将引号对于字符串的特殊含义去掉,就剩下普通字符的含义即可。转义是给引号前加反引号 \

关系运算

关系运算

最后只有两种结果,真与假,也就是布尔值(boolean)D的true和false。

等于和全等于

==等于判断两边的数值是否相等
===全等于则是先判断两边的类型是否相等,在判断数值相等。
同理于
!=不等判断两边的数值是否不相等
!==不全等则是先判断两边的类型是否不相等,在判断数值不相等。

赋值运算

赋值运算

逻辑运算

逻辑运算

自增自减运算

符号:

++ 表示让一个数字递增1
--表示让一个数字递减1

一半情况++ 与 -- 放在变量前后是一样的

但是当递增运算碰到赋值或者输出的时候,++放在前面和后就有了区别:

var a = 1;
console.log(a++); // 1
console.log(a); // 2
var b = 1;
var c = b++;
console.log(c); // 1
console.log(b); // 2

当++或者--放在后面的时候,则是先进行赋值运算再进行递增运算。

类型转换

1.转换为布尔型

语法:Boolean(arg)

  • 非0的数字转换为布尔型的true,0转换成false。
  • 非空字符转换成true,空字符转换为false。
  • undefined转换为布尔型的false
  • null转换为布尔型的false

2.转换为字符串

语法:String(arg)或者数据.toString()但后者不能加给null和undefined

  • true转换为字符串仍为 true,false转换为字符串仍为false
  • null转换为字符串扔为null
  • undefined转换为字符串仍为undefined

3. 转换为数字

语法:Number(str)

  • NaN代表不是数字,但是他是数字类型(没有意义的数字)
  • 非数字字符串转换后都是NaN(NaN是一个不是数字的数字类型)
  • true转为数字为1,false转为数字为0
  • undefined转换为数字为NaN
  • null转化为数字为0

4.使用函数强制转换为数字

语法:
parseInt(arg)强制转换为整数
parseFloat(arg) 强制转换为小数

  • 小数转换为整数只取整数,向下取整
  • 首位非数字的字符串强转为整数为NaN,首位是数字的字符串强转为整数是首位的数字
  • 布尔型强转为数字为NaN
  • undefined强转为数字为NaN
  • null强转为数字为NaN
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,294评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,780评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,001评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,593评论 1 289
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,687评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,679评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,667评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,426评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,872评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,180评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,346评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,019评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,658评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,268评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,495评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,275评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,207评论 2 352

推荐阅读更多精彩内容