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. Delphi GDI+ 安装方法

    [转]Delphi GDI+ 安装方法转自:万一博客(http://www.cnblogs.com/del/)GDI+ 是 Windows 的一个函数库, 来自 Windows\System32\GD ...

  2. windows server2012r2 安装NET Framework 3.5

    在Windows Server 2012上安装一些软件,比如Oracle 11g等,经常会出现下面这样的错误:“无法安装一下功能:.NET Framework 3.5(包括.NET 2.0和3.0)” ...

  3. Linux文件大小 指令&编程

    在工作和日常的编程中时常需要确定文件的大小,一些基本的查看方式在此做一个总结. 一. linux shell环境下 df可以查看一级文件夹大小.使用比例.档案系统及其挂入点,但对文件却无能为力.    ...

  4. 转-C++之虚函数不能定义成内联函数的原因

    转自:https://blog.csdn.net/flydreamforever/article/details/61429140 在C++中,inline关键字和virtual关键字分别用来定义c+ ...

  5. linux top监控的使用

    b : toggle highlight x : toggle sort row highlight shift + < > : switch sort row

  6. 第五篇 scrapy安装及目录结构,启动spider项目

    实际上安装scrapy框架时,需要安装很多依赖包,因此建议用pip安装,这里我就直接使用pycharm的安装功能直接搜索scrapy安装好了. 然后进入虚拟环境创建一个scrapy工程: (third ...

  7. 如何在vue-cli 中适当的配置,来满足自己项目需求 ?

    1. 改变index.js 中端口号host host:'localhost' 改为 host: '0.0.0.0' 然后换成自己的ip 访问: 2. 在vue 中运行cnpm run start 中 ...

  8. 008-Java的StringBuilder和StringBuffer

    StringBuffer 和 StringBuilder 与String的不同 String Java中十分重要的类;被声明为final class.除了hash这个属性, 其他属性也均声明为fina ...

  9. 获取url链接上的参数值的函数

    function getUrlParam(name){ var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)'); var ...

  10. Samza系统架构