js 类型之间的相互转化

设置元素对象属性
var img = document.querySelector("img")
img.setAttribute("src","http://www.baidu.com/img")

值类型
number
string
undefined
boolen

引入类型
function
a = function(){
}

object
a = {
name:"bob",age:18}
a.age

null
a = null;

其他类型
Array
var a = new Array(1,2,3,4,5)
a = [5,4,3,2,1]

Date
var d = new Date();
year = d.getFullYear()
d.getDay()
d.getMonth()
d.getDate()

RegExp
var re = new RegExp("d{3}","g");
var res = "abc123abc123".match(re)

re = /d{2}/g;
res = "alb23abc456".match(re);
console.log(res);

re = /[abc]/gi;
res = "aBc".match(re);
i不区分大小写
g全文匹配

var a = [3,5,2,1,4]
a[1]

var dic = {
name:"bob",
age:18,
little-name:"b"}
dic["name"]
dic["age"]
dic.name,dic.age
dic["little-name"]
dic中所有key都是string类型,value可以为任意类型
dic中key可以通过中括号及语法访问值,但key不满足js
命名规范时,只能使用中括号语法

类型转化

1.值类型之间的相互转化
var num = 10;
var s = "123";
var b1 = Boolean(num)
var b2 = Boolean(s);

布尔类型转化为数字类型
Number(false)>>>0
Number(true)>>>1
true+true >>>>2

var s11 = "123";
常用转化的字符一定是一个合法的数字字符串形式,使用加号,可以快速转化成number
var n11 = +s11;

转化为字符串类型

var nn1 = 123;
var ss1 = String(nn1);

var ss2 = nn1.toString();
var ss3 = "" +nn1;
console.log(ss1,ss2,ss3);

var ss4 = 123..toString()
console.log(ss4);

弱语言类型
console.log(3+"5");//"35"
console.log(3-"5"); // -2
总结:1.最快转换为数字类型+"123" +true
2.最快转化为字符串形式 "" + 123 | "" +true

运算符:
1.算法运算符
var res = 5/2; //2.5
2.var res1 = 5%2;
3.++在后先赋值再自增
++在前先自增再赋值
4.赋值运算符
var x=20;
x+=10;

5.比较运算符
var y =10;
var z ="10";
y==z 只比较值
y === z 全等,值与类型都必须相等

y != z false;
y !== z true;

6.逻辑运算符:
var a1 = 10;
var a2 =20 ;
var a3 = "10";

逻辑与: 条件1&&条件2
逻辑或: 条件1 || 条件2
逻辑非: 非真即假

逻辑运算符的短路效果
var res1 = a1==a3 && a2++;
console.log(res1,a2);// 20,21

逻辑与的短路效果,条件1位假,条件2就不会被执行
var res1 = al == a3 && ++a2; //
console.log(res1,a2); // false 20

逻辑或的短路效果,条件为真,条件2就不会被执行
var res2 = a1==a3 || a2++;
console.log(res2,a2);//true 20

5.三目运算符;结果=条件表达式?结果1:结果2;
var xx= 10;
var yy= "10";
var res = xx ==yy?"xx与yy的值相等":"xx与yy的值不相等"
console.log(res)

console.log(NaN == NaN)//false NaN的前身不同,所以是false
查看是否是NaN isNaN(x)

if 分支结构
```python
if (表达式1){}
else if(表达式2){}


三种弹出窗口
alert(123)//普通弹出框
var res = prompt("请输入:");//输入框
var  res = confirm("请选择");//确认框,得到true|false

循环

①for (循环变量;条件表达式;循环变量增量){}
for(var i=0;i<5;i++){
console.log("加油")
}
②var j=0;
    while(j<5){
    console.log("加油");
    j++;}
③ var k=0;
    do{
    console.log("加油");
    k++;}while(k < 5);
总结:
1.for :解决已知循环次数的
2.while:可以解决所有for循环可以解决的问题,也可以解决不知道循环次数但知道结束条件
3.do...while:无论条件是否满足,循环体都会被执行一次

函数
1.函数的定义
function 函数名(形参列表){函数体;}
2.函数的调用
var res = 函数名(实参列表)
3.函数的参数
①个数不需要统一
有三个形参可以任意传
②可以任意位置具有默认值
③通过...语法接收多个值
4.返回值讲解
①可以空return操作,用来结束函数
②返回值可以为任意js类型数据
③函数最多只能拥有一个返回值
js函数的重点:如何给事件提供功能
函数的定义与调用(调用可以写在定义前)

匿名函数,自定义
(function(){
var aaa = 1000;
console.log("匿名函数的自调用")})()