js书写位置

由于在写css样式时使用的时双引号,所以我们在写js代码时建议使用单引号(‘’)!

行内式

<input type="button" value="点我" onclick="alert('hello world')" />

嵌入式

在head里面写

<script>

alert('hello world');

</script>

外部式

新建一个.js文件,再引入!

// 在head引入

<script src="文件名.js"></script>

声明变量

var age;  

var number = ;  // 声明变量时并赋值

var userName, userPassword;  //可以同时声明多个变量

var age = , name = 'kay', sex = 'boy';  //声明多个变量的同时可以赋值

变量名命名规则和规范:

由字母,数字,下划线,$符号组成,不能以数字开头!

不能使用关键字和保留字,如:for和while!

区分大小写,变量名的命令必须要有意义性!

建议使用驼峰命名法,首字母小写,后面单词的首字母要大写 ,如userName。

动手实验之交换两个变量的值

var number1 = ;

var number2 = ;

第一种:借助第三个变量

var tmp;

tmp = number1;

number1 = number2;

number2 = tmp;

console.log(number1, number2);  //输出到浏览器的控制台(就是chrome>>f12>>Console)

第二种:加减法(两个变量值是数字才行)

number1 = number1 + number2;

number2 = number1 - number2;

number1 = number1 - number2;

console.log(number1, number2);

数据类型:基本数据类型

Number:

在c,java,c# 声明变量的时候就确定了数据类型。

如:int age = 18;

但在javascript中声明变量的时候并没有确定变量的数据类型!

var age = 18;

age = 'kay';

代码执行的过程中,会确定变量的数据类型。

进制:

十进制: 0 - 9

var num = 10;  // 结果10

十六进制:  0 - 9加A - F

var num = 0x10;  //结果16

var num = 0xAB;  //171

八进制: 0 - 7

var num = 010;  //8

浮点数:浮点数的精度问题

var n = 5e-324;  //科学计数法  5乘以10的324次方

浮点数值的最高精度是17为小数,但在进行算术计算时其精确度远远不如整数

var reault = 0.1 + 0.2;  // 结果不是0.3,而是:0.30000000000000004;

不要判断两个浮点数是否相等!

数值范围:

最小值:Number.MIN_VALUE;  //这个值为:5e-324

最大值:Number.MAX_VALUE;  //这个值为:1.7976931348623157e+308

无穷大:Infinity  如5除以0结果为Infinity

无穷小:-Infinity  如5除以0结果为-Infinity

数值判断:

NaN: not a number  //NaN与任何值都不相等,包括它本身!

如: 5乘以字符串'abc'结果为NaN

isNaN: is not a number  //结果true和false

如:isNaN(123) 结果为false。  //判断123不是数字则为true,是数字则为false!

String类型

转移符:

\n  换行    \f  换页

\t  制表符    \\  反斜杠

\b  空格    \r  回车

\'  单引号    \"  双引号

\xnn  以十六进制代码nn表示一个字符(其中n为0-F)。如:\x41表示"A"。

\unnnn   以十六进制代码nnnn表示一个Unicode字符(其中n为0-F)。如:\u03a3表示希腊字符"Σ"。

获取字符串的长度:

var str = 'ab\\cd';  

console.log(str.length);  结果为:5

字符串拼接:  使用加号(+)拼接

'a' + 'b'  结果 ab

‘a’ + 123  结果a123

'male:' + true  结果male:true

1,两边只要有一个是字符串,那么加号(+)就可以把它们拼接在一起。

2,两边都是数字时,就是相加计算。

Boolean类型

Boolean字面量:true和false,区分大小写

计算机内部存储:true为1,false为0

Undefined和Null

1,Undefined表示一个声明了没有赋值的变量,变量只声明的时候默认是Undefined。

2,Null表示一个空,变量的值如果想为null,必须手动设置。

获取变量的数据类型:typeof

var name = 'kay';

console.log(typeof name);  //string

注释

单行注释:描述下一行代码的作用是什么

// 这是一个变量

var name = 'kay';

多行注释:描述一些函数...

/*

描述内容

*/

数据类型转换

转换成字符串类型  .toString()  String()

 var age = ;

var name = 'kay';

var isRight = true;

var a;

var b = null;

// 第一种方法.toString()  undefined和null不能转换。这种用的比较多

console.log(typeof age.toString());  // string

console.log(typeof isRight.toString());  // string

//console.log(typeof a.toString());  //报错Uncaught TypeError: Cannot read property 'toString' of undefined

//console.log(typeof b.toString());  //报错Uncaught TypeError: Cannot read property 'toString' of null

// 第二种方法String()  都可以转换

console.log(typeof String(a));  // string

console.log(typeof String(b));  // string

//第三种字符串拼接:空字符串  都可以转换

console.log(typeof (a + ''));  // string

由于代码是从上到下,从左到右执行,所以加括号可以优先执行,

console.log(typeof a + '');如果不加括号,代码会先返回表达式的的结果,再进行拼接! 

转换成数值类型  Number() parseInt() parseFloat() +,- 0

var n1 = '';

var n2 = '123kay';

var n3 = '14.13.15';

var isRight = true;

// 第一种 Number():如果转换的字符串中包含有非数值字符,返回NaN,可以转换布尔值

console.log(Number(n1));  //

console.log(Number(n2));  // NaN

console.log(Number(n3));  // NaN

console.log(Number(isRight))  // 1  之前说过在计算机内部true为1,false为0

//第二种 parseInt():如果第一个字符是数字会解析到非数字就结束,并把数字返回过来,如果第一个非数字返回NaN

console.log(parseInt(n2));  //

console.log(parseInt(n3));  //

console.log(parseInt(isRight));  // NaN

//第三种 parseFloat():与parseInt()很相似,不同的是会解析到第二个点(.)就结束,并把值返回

console.log(parseFloat(isRight));  // NaN

console.log(parseFloat(n3));  // 14.13

var n4 = '14.k13.15';

var n5 = '14.113a.15';

console.log(parseFloat(n4));  //

console.log(parseFloat(n5));  // 14.113

// 第四种方法 +,- 0等运算  可以转换布尔值

var n1 = '';

var n2 = '123kay';

var isRight = true;

console.log(+ n1);  // 666  

console.log(+ n2);  // NaN

console.log(+ isRight);  //

console.log(n1 - );  // 666  减号(-)会先转换n1为数值类型再进行运算

转换成Boolean类型  Boolean()  记住只有以下五种会转换为false

var a;

var b = null;

var c = '';

var d = ;

var e = NaN;

// 因为它们都只有一个值所以只能转换为false,其它都可以转换为true

console.log(Boolean(a));  // false

console.log(Boolean(b));  // false

console.log(Boolean(c));  // false

console.log(Boolean(d));  // false

console.log(Boolean(e));  // false

操作符(也叫运算符)operator

表达式的组成是由,操作数与操作符,它们会有一个结果!

算术运算符

+ - *  / 取余%

console.log(5 / 0);  // Infinity

console.log(5 % 0);  // NaN

一元运算符

一元运算符,只有一个操作数的运算符。

二元运算符,两个操作数的运算符。

++  // 表示自身+1

--  // 自身-1

++前置和--前置:先执行自身+1或-1,再返回表达式的结果

var n1 = 1;

console.log(++ n1);  // 2

console.log(++ n1);  // 3

console.log(-- n1);  // 2

后置++和后置--:先返回表达式的结果,再执行自身+1或-1

var n2 = 1;

console.log(n2 ++);  // 1

console.log(n2);  //2

console.log(n2 --);  //2

console.log(n2);  //1

逻辑运算符(也叫布尔运算符)

var a = true;

var b = false;

&& 与  当两个操作数为true,结果才为true

console.log(a && a);  //true

console.log(a && b);  //false

|| 或   当两个操作数为false,结果才为false,否则结果是true

console.log(b || b);  // false

console.log(a || b);  // true

! 非   取反

console.log(! a);  // false

console.log(! b);  // true

关系运算符(也叫比较运算符)  返回布尔类型的结果true/false

< 小于

>大于

<=小于等于

>=大于等于

var n1 = 3;

var n2 = 8;

console.log(n1 < n2);  // true

相等运算符  返回布尔类型的结果true/false

==  等于

!= 不等于

=== 全等

!== 全不等

赋值运算符

=

+= -= *= /= %=

var n = 1;

n = n + 1;  // 可简写为 n += 1;

运算符的优先级

1,括号 ()

2,一元运算符 ++ -- !

3,算术运算符 * / % + -

4,关系运算符 > >= < <=

5,相等运算符 == != === !==

6,逻辑运算符 先&& 后||

7,赋值运算符

练习1:

4 >= 6 || 'kay' != 'superman' && !(12 * 2 == 144) && true

true

解析过程:

//4 >= 6 || 'kay' != 'superman' && !(12 * 2 == 144) && true

// 解析过程

// 先把用括号分开,因为&&和||它们它们优先级最低,所以它们是最后运算
//(4 >= 6) || ('kay' != 'superman') && (!(12 * 2 == 144)) && true // 找优先级最高的()
//(4 >= 6) || ('kay' != 'superman') && (!false) && true
//(4 >= 6) || ('kay' != 'superman') && (true) && true // 剩下只有关系运算符高一点
//(false) || ('kay' != 'superman') && (true) && true // 相等运算符
//(false) || (true) && (true) && true // 逻辑运算符是先&&后||。由于程序是从上到下,从左到右执行的
//(false) || true && true
//(false) || true
// true

练习2:

var n = 10;

5 == num / 2 && (2 + 2 * num).toString() === '22'

解析过程:

// 5 == num / 2 && (2 + 2 * num).toString() === '22'

// (5 == num / 2) && ((2 + 2 * num).toString() === '22')

// (5 == num / 2) && (22.toString() === '22')
// (5 == num / 2) && ('22' === '22') // (5 == 5) && ('22' === '22')
// (true) && ('22' === '22')
// (true) && (true) // true

布尔类型的隐式转换

什么是显示类型转换:

之前用到的.toString(),String(),Number(),parseInt(),parseFloat(),

Boolean()这些都是显示类型转换。

什么是隐式类型转换:

就是不调用数据类型转换的方法,它会自动转换为布尔类型。

ECMAScript1.1 js书写位置 | 声明变量 | 基本数据类型 | 数据类型转换 | 操作符 | 布尔类型的隐式转换的更多相关文章

  1. Atitit.变量的定义 获取 储存 物理结构 基本类型简化 隐式转换 类型推导 与底层原理 attilaxDSL

    Atitit.变量的定义 获取 储存 物理结构 基本类型简化 隐式转换 类型推导 与底层原理 attilaxDSL 1.1. $ 美元字符, php 黑头1 1.2. 默认变量的范围和声明:1 1.3 ...

  2. js基本类型,隐式转换,变量

    Js笔记(脚本语言 node.js) Js五种基本类型:数字,字符串,布尔,null,undefined: HTML结构,表现,行为分离. 变量命名规则: 以字母或[下划线开始($)]不推荐,后面跟上 ...

  3. js中要声明变量吗?

    你好,js语言是弱类型语言,无需申明即可直接使用,默认是作为全局变量使用的.建议:在function里时应使用var 申明变量,这样改变量仅仅只在function的生存周期内存在,不会污染到,全局控件 ...

  4. XCode下在不同位置声明变量的用法(转)

    XCode下在不同位置声明变量的用法 方式一:直接在.h文件@interface中的大括号中声明. @interface Test : NSObject { NSString *str; // 私有变 ...

  5. js学习日记-隐式转换相关的坑及知识

    隐式转换比较是js中绕不过去的坎,就算有几年经验的工程师也很有可能对这块知识不够熟悉.就算你知道使用===比较从而避免踩坑,但是团队其它成员不一定知道有这样或那样的坑,有后端语言经验的人常常会形成一个 ...

  6. js中的一些隐式转换和总结

    js中的不同的数据类型之间的比较转换规则如下: 1. 对象和布尔值比较 对象和布尔值进行比较时,对象先转换为字符串,然后再转换为数字,布尔值直接转换为数字 [] == true; //false [] ...

  7. Js 中那些 隐式转换

    曾经看到过这样一个代码:  (!(~+[])+{})[--[~+""][+[]]*[~+[]]+~~!+[]]+({}+[])[[~!+[]*~+[]]] = sb , 你敢相信, ...

  8. 大数据学习--day02(标识符、变量、数据类型、类型转换、进制转换、原码反码补码)

    标识符.变量.数据类型.类型转换.进制转换.原码反码补码 标识符: java50个关键字不能做标识符,以数字开头不能做标识符(这个老是忘记写一个类名的时候) 变量: 变量分为成员变量和局部变量,注意作 ...

  9. JS的类型转换,强制转换和隐式转换

    JS的类型转换 1.强制转换 通过String(),Number(),Boolean()函数强制转换 var str=123; var str1='123'; console.log(typeof s ...

随机推荐

  1. 详解Windows注册表分析取证

    大多数都知道windows系统中有个叫注册表的东西,但却很少有人会去深入的了解它的作用以及如何对它进行操作.然而对于计算机取证人员来说注册表无疑是块巨大的宝藏.通过注册表取证人员能分析出系统发生了什么 ...

  2. contest-20191021

    文化课读的真不开心 回来竞赛 假人 sol 根据不等式有 abs(a-b)+abs(b-c)>=abs(a-c) 那么每一个都会选. 可以发现每一段只会选在端点上(否则移到端点更优). 那么dp ...

  3. PHP面试 PHP基础知识 五(自定义函数和内部函数)

    自定义函数 变量的作用域和静态变量 变量的作用域:变量的作用域也成为变量的范围,变量的范围即它定义上的上下文背景(也就是它生效的范围). 大部分的PHP变量只有一个单独的范围.这个单独的范围跨度同样包 ...

  4. GF学习未解之谜

    1.很奇怪事件管理器里面的用到的订阅事件里面的ID是通过typeof(xxx).GetHashCode()得到的,怎么解决id重复的问题? 2.log系统里面是不是直接全部当做多参数解决问题比较好?

  5. Apache Flink 整体介绍

    前言 Flink 是一种流式计算框架,为什么我会接触到 Flink 呢?因为我目前在负责的是监控平台的告警部分,负责采集到的监控数据会直接往 kafka 里塞,然后告警这边需要从 kafka topi ...

  6. spring 中 isolation 和 propagation 详解

    可以在XML文件中进行配置,下面的代码是个示意代码 <tx:advice id="txAdvice" transaction-manager="txManager& ...

  7. python:Django 简介。

    Django是基Python的重要WEB框架. 1.安装Django Web框架 安装  pip 安装 在命令行模式 执行  [pip install django == 2.0]或者 [pip in ...

  8. 什么是CI/CD?

    CI, CD AND CD 当我们在谈论现代的软件编译和发布流程的时候,经常会听到CI 和CD这样的缩写短语.CI很容易理解,就是持续集成.但是CD既可以指代码持续交付,也可理解为代码持续部署.CI和 ...

  9. c# Winform 多线程操作

    主要是对一个过程需要的时间很长执行时会出现界面假死的情况 方法1: Application.DoEvents(),这种方法当你拖动窗体时,界面不会假死.但在你拖动时代码不再执行,也就是阻塞了,当你不再 ...

  10. HTML5 Shiv--解决IE(IE6/IE7/IE8)不兼容HTML5标签的方法

    HTML5的语义化标签以及属性,可以让开发者非常方便地实现清晰的web页面布局.大多数浏览器基本兼容html5,但目前来说ie6/ie7/ie8还不兼容html5标签,所以需要javascript处理 ...