ECMAScript1.1 js书写位置 | 声明变量 | 基本数据类型 | 数据类型转换 | 操作符 | 布尔类型的隐式转换
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书写位置 | 声明变量 | 基本数据类型 | 数据类型转换 | 操作符 | 布尔类型的隐式转换的更多相关文章
- Atitit.变量的定义 获取 储存 物理结构 基本类型简化 隐式转换 类型推导 与底层原理 attilaxDSL
Atitit.变量的定义 获取 储存 物理结构 基本类型简化 隐式转换 类型推导 与底层原理 attilaxDSL 1.1. $ 美元字符, php 黑头1 1.2. 默认变量的范围和声明:1 1.3 ...
- js基本类型,隐式转换,变量
Js笔记(脚本语言 node.js) Js五种基本类型:数字,字符串,布尔,null,undefined: HTML结构,表现,行为分离. 变量命名规则: 以字母或[下划线开始($)]不推荐,后面跟上 ...
- js中要声明变量吗?
你好,js语言是弱类型语言,无需申明即可直接使用,默认是作为全局变量使用的.建议:在function里时应使用var 申明变量,这样改变量仅仅只在function的生存周期内存在,不会污染到,全局控件 ...
- XCode下在不同位置声明变量的用法(转)
XCode下在不同位置声明变量的用法 方式一:直接在.h文件@interface中的大括号中声明. @interface Test : NSObject { NSString *str; // 私有变 ...
- js学习日记-隐式转换相关的坑及知识
隐式转换比较是js中绕不过去的坎,就算有几年经验的工程师也很有可能对这块知识不够熟悉.就算你知道使用===比较从而避免踩坑,但是团队其它成员不一定知道有这样或那样的坑,有后端语言经验的人常常会形成一个 ...
- js中的一些隐式转换和总结
js中的不同的数据类型之间的比较转换规则如下: 1. 对象和布尔值比较 对象和布尔值进行比较时,对象先转换为字符串,然后再转换为数字,布尔值直接转换为数字 [] == true; //false [] ...
- Js 中那些 隐式转换
曾经看到过这样一个代码: (!(~+[])+{})[--[~+""][+[]]*[~+[]]+~~!+[]]+({}+[])[[~!+[]*~+[]]] = sb , 你敢相信, ...
- 大数据学习--day02(标识符、变量、数据类型、类型转换、进制转换、原码反码补码)
标识符.变量.数据类型.类型转换.进制转换.原码反码补码 标识符: java50个关键字不能做标识符,以数字开头不能做标识符(这个老是忘记写一个类名的时候) 变量: 变量分为成员变量和局部变量,注意作 ...
- JS的类型转换,强制转换和隐式转换
JS的类型转换 1.强制转换 通过String(),Number(),Boolean()函数强制转换 var str=123; var str1='123'; console.log(typeof s ...
随机推荐
- 详解Windows注册表分析取证
大多数都知道windows系统中有个叫注册表的东西,但却很少有人会去深入的了解它的作用以及如何对它进行操作.然而对于计算机取证人员来说注册表无疑是块巨大的宝藏.通过注册表取证人员能分析出系统发生了什么 ...
- contest-20191021
文化课读的真不开心 回来竞赛 假人 sol 根据不等式有 abs(a-b)+abs(b-c)>=abs(a-c) 那么每一个都会选. 可以发现每一段只会选在端点上(否则移到端点更优). 那么dp ...
- PHP面试 PHP基础知识 五(自定义函数和内部函数)
自定义函数 变量的作用域和静态变量 变量的作用域:变量的作用域也成为变量的范围,变量的范围即它定义上的上下文背景(也就是它生效的范围). 大部分的PHP变量只有一个单独的范围.这个单独的范围跨度同样包 ...
- GF学习未解之谜
1.很奇怪事件管理器里面的用到的订阅事件里面的ID是通过typeof(xxx).GetHashCode()得到的,怎么解决id重复的问题? 2.log系统里面是不是直接全部当做多参数解决问题比较好?
- Apache Flink 整体介绍
前言 Flink 是一种流式计算框架,为什么我会接触到 Flink 呢?因为我目前在负责的是监控平台的告警部分,负责采集到的监控数据会直接往 kafka 里塞,然后告警这边需要从 kafka topi ...
- spring 中 isolation 和 propagation 详解
可以在XML文件中进行配置,下面的代码是个示意代码 <tx:advice id="txAdvice" transaction-manager="txManager& ...
- python:Django 简介。
Django是基Python的重要WEB框架. 1.安装Django Web框架 安装 pip 安装 在命令行模式 执行 [pip install django == 2.0]或者 [pip in ...
- 什么是CI/CD?
CI, CD AND CD 当我们在谈论现代的软件编译和发布流程的时候,经常会听到CI 和CD这样的缩写短语.CI很容易理解,就是持续集成.但是CD既可以指代码持续交付,也可理解为代码持续部署.CI和 ...
- c# Winform 多线程操作
主要是对一个过程需要的时间很长执行时会出现界面假死的情况 方法1: Application.DoEvents(),这种方法当你拖动窗体时,界面不会假死.但在你拖动时代码不再执行,也就是阻塞了,当你不再 ...
- HTML5 Shiv--解决IE(IE6/IE7/IE8)不兼容HTML5标签的方法
HTML5的语义化标签以及属性,可以让开发者非常方便地实现清晰的web页面布局.大多数浏览器基本兼容html5,但目前来说ie6/ie7/ie8还不兼容html5标签,所以需要javascript处理 ...