JavaScript 01 (JS引入/变量/数据类型/类型转换/Math方法)

JS的引入及调试,常量,字面量,变量,JS中的数据类型,JS的运算符,JS的运算符之隐式类型转换,强制类型转换,Math的相关方法,parseInt()和parseFloat()

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

欢迎大家去我的个人技术博客看看,点赞收藏注册的都是好人哦~

https://xiaowu.xyz

前言--

JavaScript诞生于1995年。起初它的主要目的是处理以前由服务器端负责的一些表单验证。在那个绝大多数用户都在使用调制解调器上网的时代,用户填写完一个表单点击提交,需要等待几十秒,完了服务器反馈给你说某个地方填错了......在当时如果能在客户端完成一些基本的验证绝对是令人兴奋的。当时走在技术革新最前沿的Netscape(网景)公司,决定着手开发一种客户端(浏览器)语言,用来处理这种装简单的验证。

**言简意赅的讲**:由于网速的原因,做一个简单的表单验证,需要很长时间,这时页面会出现空白现象。所以Netscape想开发一种语言,在浏览器端进行验证。(LiveScript)

当时就职于Netscape公司的布兰登·艾奇开始着手计划将1995年2月发布的LiveScript同时在浏览器和服务器中使用。为了赶在发布日期前完成LiveScript的开发,Netscape与Sun公司成立了一个开发联盟。而此时,Netscape为了搭上媒体热炒Java的顺风车,临时把LiveScript改名为JavaScript,所以从本质上来说JavaScript和Java没什么关系。(为了推广语言)

JavaScript 是运行在客户端(浏览器)的编程语言

JavaScript是一种运行在客户端 的脚本语言 (解释型语言)

JavaScript的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。


目录:

一、JS的引入及调试

二、常量,字面量 ,变量

三、JS中的数据类型

四、JS的算数运算符

五、JS的运算符之隐式类型转换

六、强制类型转换

七、Math的相关方法 

八、parseInt()和parseFloat()


一、JS的引入及调试

首先,JavaScript,以下我们简称JS/js,我们需要知道三个问题(吾日三省吾身),js有什么用?js是由什么组成?js代码应该写在什么地方?

1.1、js的作用

JavaScript是一种专为与网页交互而设计的客户端脚本语言。

最初是为了实现表单验证

JavaScript能完成的功能多得去了?

用户交互(表单验证)

网页特效(漂浮的广告)

用户记住账户名密码

网页游戏(围住神经猫)

……

1.2、js的组成


1.3、js的书写位置

好了,我知道js是啥了,那么js的代码我们应该写在哪里?

首先,js代码有两种写法,

第一种可以直接把js代码写在<script></script>标签里

例如:

<script>alert("我在script标签中哦")</script>

第二种可以在script标签中加上src的属性,里面填上外部的js文件,在外部js文件中书写js代码

<script src="js/index.js"></script>

注意:这个时候,script双标签里面的代码是不会生效的。

然后我们看看script标签应该写在什么地方

1.3.1、在页头(也就是head中)

1.3.2、在页尾

(body最后或者body闭合标签之外(html闭合标签之内))

tip:或者放在</body>和</html之间>

1.3.3、元素事件中(写在标签属性中)

2、关于js的调试方法

js有一个问题,如果前面的代码出现问题,后面的代码都不会执行,我们就需要借助一些方法/函数,来测试代码段是否出现问题。

2.1、document.write("world world");

document.write()  在文档中输入一段内容  document.write()  在()写你想输出的内容

2.2、console.log("world world");

console.log("world world");  //   在控制台输出一段内容  

2.3、alert();

alert();   弹出框   alert("hello world"); //  弹出框输出一段内容

2.4、他们之间的区别和优缺点

1、document.write()  会在html的文档中输出内容,会影响到原本的html页面的结构,根据代码的位置不同,会在不同位置输出内容,不太可控。

而且由于闭合的文档流使用document.write()会覆盖文档流,所以,在事件和异步的操作中,document.write会重置掉全部页面中的文档流,并用write()中的内容来替换body中的内容。不推荐使用。

2、alert() 会在浏览器窗口中弹出一个弹出框,alert()会阻塞js,如果alert()放在html标签之前,alert()会导致后面的html页面阻塞加载,而且alert()数量过多也会造成一定的阅读困难。请少量使用。

3、console.log() 会在控制台输入内容 ,不会影响页面结构,不会阻塞页面,也不会造成任何困扰,强烈推荐使用。

二、常量/字面量 ,变量


1、常量/直接量( 字面量 literal)

所有直接量(字面量),就是程序中直接显示出来的数据    

  100;    //数字    的字面量

  "我是文本"        //字符串  的字面量

   true  false      //布尔    的字面量   


2、变量

变量 (存储数据的容器)

2.1、变量的定义

变量定义:

var age; //var 是关键字,age是变量名

赋值:

      age = 20;

定义的同时赋值:

      var age=20;

可以一次定义多个变量:

      var name=“tianyufei", age=18,weight=108;


注意:变量在声明后但没有赋值的时候,系统都会给变量一个默认值,为undefined,类型为undefined。

2.2变量的命名规范

JS的标识符:

标识符是指JS中定义的符号,例如:变量名、函数名等。

标识符可以由任意的大小写字母、数字、下划线(_)和美元符($)组成,但是不能以数字开头,不能是js中的保留字和关键字。

标识符区分大小写,如:age和Age是不同的变量。但强烈不建议,用同一个单词的大小写区分两个变量

什么是JS的关键字和保留字?

关键字指JS语法中已经使用过了的单词,它们有自己本身的特殊含义。

保留字指的是JS保留下来不允许用户使用的单词,这些单词尽管JS目前没有使用,但是有可能会在之后的版本升级中用上,所以提前保留下来,而我们的代码也可能会运行很多年,如果使用了这些保留字,就有可能在某一次JS语法更新的时候出现bug。

三、JS中的数据类型

String:字符串;

Number:数字(整数,浮点数float)

Array:数组

Object:对象

布尔类型:Boolean  a==b

特殊类型 Null、Undefined、NaN(NaN其实是属于Number类型的一个特殊值)

      如果alert(abc)一个不存在的变量,会直接报错,而不是undefined,可见undefined和真正的未定义还是有些区别的。因为它是一种特殊类型。

null也是一种值,但逻辑含义是没有值,它是对象Object类型

获取变量类型的方法:

typeof 变量名;  返回的是一个对应数据类型的字符串("number","string")

例如: 

var a= 100;

console.log(typeof a);

JS的number类型的特殊值 NaN(非数字) Infinity (无限大/无穷大)

四、JS的算数运算符

算术运算符 (+,-,/,*,%);

整数的加,减,乘,除,和取余就不说了,这个小学的数学老师会教。

还有一个优先级的问题,小学老师应该也教了,先乘除取余,后加减。

注意:%取余后的余数一定小于除数。


    //小数计算 会失精度

    0.1 + 0.2   // 0.30000000000000004   小数计算 会失精度

    0.1 + 0.7   // 0.7999999999999999

// 解决办法 toFixed(n)

var result = (0.1 + 0.7).toFixed(4);

console.log(result);

//toFixed(n) 数字的一个方法 保留n位小数 得到一个数字的字符串

五、js算数运算符之隐式类型转换

在Js中,各个数据类型在遇到算数运算符后,都会进行隐式的类型转换,这种转换我们是看不到的, 我们只能看到转换后的结果。

字符串 遇到 "+" 会 拼接 形成新的字符串(无论字符串在前还是在后)

    // var a = "100"; // string 

    // var b = 3;

    // var c = a + b;  // "1003"  => 拼接之后会得到字符串

    // var c = b + a;  // "3100"

    // console.log(c);

    // console.log("100" + true); // 100true

    // console.log("100" + undefined); // 100undefined

    // console.log("100" + null); //100null

    // console.log("100" + NaN); //100NaN

字符串 遇到 "-,*,/,%" 会 隐式的转化为数字("100","123") 并进行相应的计算,如果不是“数字”字符串("a","abc","blog","123a"),就会转换为NaN

boolean 值 遇到 算术运算符(+,-,*,/,%) 也会 隐式的转化为 数字  true => 1 ; false =>0

null 遇到 算术运算符(+,-,*,/,%)  也会 隐式的转化为  0

undefined不会隐式的转化为数字,会转换为 NaN

    var a = "100";

    var b = 3;

    var c = a % b;

    // console.log(c);    //  1

    console.log("100" * true); // 100*1  =>100

    console.log("100" * undefined); // NaN    undefined不会隐式的转化为数字

    console.log("100" * null); // 100 * 0  => 0

    console.log("100" * NaN); //NaN


六、强制类型转换

String() 强制把其他类型转化为 string ( 函数执行之后得到 一个对应的字符串 )

Number() 强制把其他类型转化为 number 类型

//所有的非数字转化为数字 都是NaN(boolean,null,"", => 0);


Boolean() 强制把其他类型转化为 boolean 类型

(0,NaN,"",undefined,null) 转化为boolean值 为false,凡是有内容的转换为boolean都会是true

注意:空格字符串(" ")和空字符串("")不同,空格字符串转换为布尔类型为true;

    var a = 1; // true

    var a = 2;  // true

    var a = Infinity; // true

    // var a = 0;  //false

    // var a = NaN; //false

    var a = "100a"; //true

    var a = " ";  //true  空格字符串

    var a = "";  //false  空字符串

    var a = undefined; //false;

    var a = null; //false;

    var b = Boolean(a);

    console.log(b)


七、Math的相关方法 

Math.random() 随机一个0-1的随机数 [0,1) 注意 取不到 1

var num = Math.random();


Math.ceil(); 向上取整 只要包含小数就向上进1     (ceil单词的意思 天花板)

var a = Math.ceil(num);


Math.floor() 向下取整 只要包含小数舍去 (floor单词的意思 地板)

 var b = Math.floor(num);


Math.round() 四舍五入 >=0.5 进 1 , <0.5 就舍去

var b = Math.round(num);


Math.min(num1,num2,num3,num4); 最小值

var min = Math.min(9, 5, 4, 3, 1, 12, 21);


Math.max(num1,num2,num3,num4); 最大值

var max = Math.max(9, 5, 4, 3, 1, 12, 21);


Math.abs(); 取绝对值

var abs = Math.abs(-10);


Math.pow(m,n) m^n m的n次幂(次方)

var num = Math.pow(2, 10);


Math.PI 3.141592653589793

console.log(Math.PI);


以上的代码都不会显示结果,需要用console.log输出结果。


八、parseInt()和parseFloat()

parseInt() 把其他类型转化为整型(整数) 把数据中 第一个非数字 之前的数提取出来 转化为 整数

parseFloat() 把其他类型转化为浮点型(小数) 把数据中 第一个非数字 之前的数提取出来 转化为 number (保留小数)

"300px" * 1 => NaN

 "300px"  =>  300

parseInt() 

    var a = "300px"; //300

    var a = "3a00px"; //3

    var a = "b3a00px";//NaN

    var a = "300.5px"; // 300

     var b = parseInt(a);

    console.log(b);

parseFloat()

var a = "300.5px";  //300.5

var b = parseFloat(a);

console.log(b);

parseInt也可以用来取整,可以将一个number类型的数字进行取整,舍弃到后面的小数位,用法和Math.floor()相同

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

推荐阅读更多精彩内容