js2

1. ***数据类型转换:
***js是弱类型编程语言:3方面:
1. 声明变量时,不用规定变量存储的数据类型
2. 赋值时,动态决定变量的数据类型
同一个变量,先后可保存不同类型的数据
3. 运算时,js会根据需要,动态转换数据的类型

2大类:
1. 隐式转换:无需程序员干预,js自动完成的类型转换
仅讨论+运算中的隐式转换:2句
算数计算中,一切类型都隐式转为number类型,再计算
比如:"2"-->2 true/false-->1/0
特例:+运算中,只要有一方是字符串,两数据都转为字符串,且+运算变为字符串拼接!

表达式:由数据,变量和运算符组成的一个公式
每个表达式默认都从左向右,两两计算
*每个表达式有且仅有一个运算结果!*

NaN:Not a Number-->说明运算中包含了无法转为数字的值
不是数字 的 数字
NaN和任何数据做计算,永远返回NaN
typeof(x): 专门用于判断x的数据类型,返回数据类型名
typeof(NaN): number

隐式转换,仅影响表达式的运算结果,不影响变量中存储的实际值。

2. 强制转换:程序员通过主动调用专门函数,执行转换
1. 任意类型 to String: 2种:
var str=x.toString();
js中,一切数据都有toString方法
var str=String(x);-->隐式转换
何时使用:程序在需要时,自动调用
***2. 任意类型 to Number: 2种:
任意类型 to Number: var n=Number(x);-->隐式

String to Number: 2种:
var n=parseInt(str);
原理:从str开始位置逐个读取每个字符
直到碰到第一个不是数字的字符时,停止读取
自动忽略开头碰到的空格
比如:var width="12px";
width+"2px"-->"12px2px"
Number(width)+Number("2px")-->NaN
parseInt(width)+parseInt("2px")
parseInt("12px")+parseInt("2px")
12 2 -->14
width=14+"px";
var money="$400"; NaN
"34.56"; 34

var n=parseFloat(str);
原理和parseInt完全一致!
但是,parseFloat,只认第一个小数点
比如:parseFloat("34.56"); 34.56
parseFloat("34.56.78"); 34.56

Number(x) vs parseInt(str)
比如:Number("12px")-->NaN
parseInt("12px")-->12
string to Number-->parseInt

Number(true)-->1
parseInt(String(true))
parseInt("true")-->NaN
x to Number-->Number()

3. 任意类型-->Boolean: 1种:
var bool=Boolean(x);-->隐式转换
"" NaN undefined null 0 --> false
其余-->true

课堂练习:
输入框:var input=[window.]prompt("输入提示");
[window.]alert();
***凡是从页面上获得一切数据,都是字符串类型

2. ***运算符和表达式:
程序:让计算机按照人的想法去执行任务
运算符:程序中模拟人的思维运算或判断的符号

运算符:算数运算符:+ - * / % ++ --
%运算:取余数 6789%100-->89
被除数/除数,不取商,而是取除不尽的余数部分
何时使用:2大用途:
1. 判断奇偶数:n%2-->1 奇数 否则 偶数
2. 限制一个运算的结果,不超过某个最大值(除数)

1. ***算数运算:仅++
++:将当前变量中的值递增1
比如:n++; ++n; <==> n=n+1;
何时使用:今后,只要对变量中的值递增1,还存回变量中
3种情况:n++单独使用,前++和后++都一样
++运算参与到其他表达式中:
前++(++n):将n中的值+1,然后返回*新值*
后++(n++):将n中的值+1,然后返回*旧值*
--:将当前变量中的值递减1
比如:n-- <==>n=n-1;

2. ***关系运算:将两个值做比较:> < >= <= == !=
只能返回两个值之一:如果成立,返回true;否则返回false
隐式转换:将所有类型都转为number类型,再比较!
特殊情况:3种:
1. 两字符串做比较:依次PK每一位字符的unicode编号
只要有一位字符,分出大小,就不再比较
比如:"3">"10" -->true
"Smith">"Scott" -->true
"m" "c"
109 99
"张东">"张无忌" -->false
"东" "无"
19996 26080
2. NaN: NaN和任何数据做大小或等于比较永远返回false
NaN和任何数据做*不等于*比较,永远返回true
isNaN(num):专门判断num是否是NaN
如果是NaN返回true,否则返回false
When:今后只要判断一个数值是否是数字或能否被转为数字,都用isNaN。如果是数字,返回false!否则返回true

3. undefined vs null
undefined == null true
===: 全等:数据类型要相同,再比较值是否相等
不带隐式转换
何时使用:只要不希望关系运算中自动隐式转换时

3. ***逻辑运算:综合多个关系运算的结果得出最终结论
隐式类型转换:自动将每个条件转为Boolean类型
鄙视题:
alert(4&&5);//?
alert(4||5);//?
返回值只能二选一:满足条件返回true,否则返回false
3个:
关系运算1&&关系运算2:
而且
两个条件必须都是true,才返回true,否则返回false
关系运算1||关系运算2:
或者
只要有一个条件为true,则返回true
只有两个条件都为false时,才返回false
!关系运算:颠倒关系运算的true/false结果

***短路逻辑:如果前一个条件已经可以得出结论,
则后续条件不再执行!
作业:5_login.html:鄙视题

***利用短路逻辑:2种:
1. 利用&&的短路逻辑:
关系运算&&操作:只有满足关系运算时,才执“操作”
2. 利用||的短路逻辑:
关系运算||操作:如果前一个条件不满足,才执行后一个"操作"

作业:逻辑运算:课堂练习:2个问题
问题1:如何判断一个字符是汉字:
第一个汉字"一"-->"\u4e00"
最后一个汉字"\u9fa5"

4. 位运算:2个
左移:n<<m 将n的二进制,左移m位
比如:1<<3 -->1* 2的3次方
右移:n>>m 将n的二进制,右移m位
比如:64>>3 -->64/ 2的3次方 ==> 8

5. 扩展赋值运算:5个:+= -= *= /= %=
仅讨论+=: n+=2; ==>n=n+2
将n中的值+2后,再保存回n中
何时使用:今后只要对变量中的值进行累加时,都要用扩展赋值运算。

6. ***三目运算:根据不同的条件,多选*一*,返回不同的结果
语法:条件1?值1:
条件2?值2:
...?...:
默认值;
无论三目运算多么复杂,结果只能是一个值。

时间: 2024-10-12 19:59:49

js2的相关文章

[JS2] JS是弱类型

1 <html> 2 <head> 3 <title>JavaScript 是弱类型的</title> 4 <Script Language="JavaScript"> 5 <!-- 6 var myVar //声明变量 7 myVar="JavaScript 是弱类型的" 8 alert(myVar) //使用消息框显示变量 9 myVar=3.1415926 //为变量赋不同类型的值 10 ale

百度地图JS--2

转载请注明出处 本文为原创 作者:injuer 严禁用于商业用途,仅学习交流 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content=&qu

04慕课网《vue.js2.5入门》——Vue-cli开发todolist

主要文件目录: 文件代码: 根实例,初始化vue: <!--index.html,网站入口页面,和main.jsp组成一套.vue文件,包含--> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1.0&qu

vue.js2.0 自定义组件初体验

理解 组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素, Vue.js 的编译器为它添加特殊功能.在有些情况下,组件也可以是原生 HTML 元素的形式,以 is 特性扩展. 使用组件 创建单文件组件 <template> </template> <script> export default { }; </script> <style lang="st

js-2

1-数据类型 1.1 字符串string var sMystring = "hello world"; 注:----索引/位置 :第一个字母是从 0 开始算的,依次向后延,空格也算. 字符串的方法: length 获取字符串的长度 alert(sString.length);    结果是11 charAt 获取指定位置的字符 alert(sString.charAt(8));       结果是r substring 字符串的截取    alert(sString.substring

Vue.js2.0从入门到放弃---入门实例

最近,vue.js越来越火.在这样的大浪潮下,我也开始进入vue的学习行列中,在网上也搜了很多教程,按着教程来做,也总会出现这样那样的问题(坑啊,由于网上那些教程都是Vue.js 1.x版本的,现在用Vue.js 的构建工具都已经升级到2.0版本了),经过了一段时间的摸索和看官方的教程和api,才了解到2.0版本在1.0版本的基础上做了好多调整,废弃了好多api...废话不多说了,把我踩过的坑,在这里跟大家说说,希望对初学者有所帮助.ps:高手请绕道. 既然是入门实例,那肯定从最基础的开始了,希

vue.js2.0开发中的几个技巧

最近用Vue.js开发了几个项目,Vue的双向数据绑定和组件化让我耳目一新,减少了很多底层重复的工作,和基于jQuey的前端开发不起来,基于Vue的开发给我一种酣畅淋漓的感觉. 下面给出我基于Vue.js做的几个页面:爆料页面.520贵州.百姓关注抢红包. 当然,在开发的过程中,不可避免的遇到了一些问题和坑,在此记录这些问题,积累经验. 1.测试环境相对路径的问题 Vue.js 2.0可以基于wepack构建,如果需要打包生成最终输出代码,直接在DOS窗口中输入命令:npm run build,

转-Vue.js2.0从入门到放弃---入门实例(一)

http://blog.csdn.net/u013182762/article/details/53021374 标签: Vue.jsVue.js 2.0Vue.js入门实例Vue.js 2.0教程 2016-11-03 14:40 21431人阅读 评论(9) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 最 近,vue.js越来越火.在这样的大浪潮下,我也开始进入vue的学习行列中,在网上也搜了很多教程,按着教程来做,也总会出现这样那样的问题(坑啊, 由

vue.js2.0的独立构建和运行时构建

转自:https://jingsam.github.io/2016/10/23/standalone-vs-runtime-only-build-in-vuejs2.html?utm_source=tuicool&utm_medium=referral 在使用 Vue.js 2.0 时,有独立构建(standalone)和运行时构建(runtime-only)两种版本可供选择.而在 Vue.js 1.0 中,却没有这种版本区别.到底该使用哪一个版本?这让我有点懵逼的感觉.本着知其然还要知其所以然