JavaScript数据类型与循环
JS中的数据类型
原始类型(基本类型)
概念:不可以再细分的类型
-
数字类型 number
-
字符串 string
-
布尔类型 boolean
-
undefined类型
-
null类型
引用类型
有两种: object , function
<script>
var obj = {
name : '张三',
age : 18,
address : {
country : '中国',
city : '武汉'
}
}
console.log(obj)
</script>
在浏览器中输出效果如下:
当我声明一个对象叫obj时,这个对象obj赋予的值是一个地址,指向储存内容的位置的地址,同样的address赋予的值同样是一个地址,指向储存着country和city内容的地址,仅仅是引用类型数据的储存是赋予地址,基本类型数据的存储的储存的值。
循环结构
概念:重复的运行一段代码[做的是相同或相似的事情]
JS支持3种循环结构:while循环、 do-while循环、for循环
循环的特点:
- 循环条件 : 规定了循环的执行次数 循环变量
- 循环操作: 相同或相似的语句 - 循环体
for循环的特殊写法
for(初始化表达式; 条件; 条件改变表达式){
循环体
}
<script>
var i = 1;//提前声明了一个变量并且赋值
for ( ; i < 10; i++ ) {
console.log(i)
}
var j = 10;//提前声明了一个变量并且赋值
for ( ; j ; j-- ) {//j变为0时,boolean类型判断,返回false,停止循环(注意,避免写成死循环)
console.log('Hellow World!')
}
var z = 10;
for ( ; z ; ) {
z--;//在循环体中做变量值的改变动作
console.log('今天天气很好!')
}
</script>
执行效果如下:
foreach循环 for - in
for(var prop in 对象){
prop;//对象的属性名
对象[prop];//对象的属性值
}
取出对象的所有属性名,每次循环将其中一个属性名赋值给变量prop,运行循环体
例子:
<script>
var obj = {
name : '张三',
age : 18,
address : {
country : '中国',
city : '武汉'
}
}
for ( var k in obj ) {
console.log(k);
}
</script>
效果如下(可以取到对象下面的全部属性名):
function(函数)
//字面量声明方式,声明会提前
function fn(参数列表){
函数体
}
// 表达式的声明方式,函数的声明不会提前
var demo = function test(参数列表){
函数体
}
this关键字
this无法赋值
- 在全局作用域中,this关键字固定指向全局对象
- 在函数作用域中,取决于函数是如何被调用的
- 函数直接调用(通过window调用),this指向全局对象
- 通过一个对象的属性调用,格式
对象.属性名()
或对象['属性']()
,this指向该对象
在函数执行过程中,this一旦被确定,就不可更改了
调用的
1. 函数直接调用(通过window调用),this指向全局对象
2. 通过一个对象的属性调用,格式对象.属性名()
或 对象['属性']()
,this指向该对象
在函数执行过程中,this一旦被确定,就不可更改了