数据类型

  • 数字 (Number),整数或浮点数,例如42或3.14159
  • 字符串 (String)
  • 布尔值 (Boolean)
  • null (js大小写敏感,因此null和NULL不一样)
  • undefined (变量被声明了,但是没有赋值时)
  • Symbol (es6中新添加的类型,一种实例是唯一且不可改变的数据类型)
  • Object

类型检查

  • typeof (可以区别:数值,字符串,布尔值,undefined,function,返回结果是字符串)(不能区别:null和对象,对象和数组)
  • instanceof (专门用来判断对象数据类型:Object,Array,function)
  • === (undefined,null)
var a;
console.log(a, typeof a, typeof a === "undefined", a === undefined) //undefined undefined true true var b = 10;
console.log(typeof b, typeof b === "number") //number true var c = true;
console.log(typeof c) //boolean var e = "hello"
console.log(typeof e) //string var d = null;
console.log(typeof d) //object var f = {}
console.log(typeof f) //object var g = []
console.log(typeof g) //object console.log("---------------------") var obj = {
obj1: [100, "hello"],
obj2: function () { }
}
console.log(obj instanceof Object)
//true
console.log(obj.obj1 instanceof Array, obj.obj1 instanceof Object)
//true true
console.log(obj.obj2 instanceof Function, obj.obj2 instanceof Object)
//true true console.log(obj instanceof Function)
//false
console.log("-----------------------") console.log(typeof obj)
//object
-
console.log(typeof obj.obj1)
//object console.log(typeof obj.obj2)
//function console.log(b instanceof Object) //false var h = null
console.log(typeof h, h === null) //object true console.log('------------')

严格类型检查 ( == 和 === )

var i = 100;
var j = "100"
console.log(i == j, i === j)
console.log(undefined == null, undefined === null)
console.log(true == 1, true === 1)

引用变量赋值

var obj1={name:"tom"}
function fun (obj){
obj={name:"jack"}
}
fun(obj1)

数据传递

function changeAge(obj){
obj={age:50}
//obj.age=50
}
  • 这两种赋值方式不一样,第一种改变了obj的指针指向

函数的调用

function setAge(age){
this.age=age;
}
var p1=new person("tom");
-----------call
这个时候setAge和person是没有关系的
setAge.call(p1,30)
将setAge绑定到p1上,相当于p1.setAge
-----------apply
setAge.apply(p1,[30,20]) ************call和apply的区别是call参数是用逗号隔开的,apply是写在数组里

回调函数

常见的回调函数:DOM事件函数、定时器函数、ajax回调函数、生命周期回调函数

IIFE(匿名函数自调用)

  • 隐藏内部实现
  • 不污染外部命名空间
  • 用它来编码js模块·
(function(){
var a=0;
function add(){
return ++a;
} //将add函数暴露给外界调用
window.$=function(){
return {add:add}
}
})()

函数中的this

当函数被实例化以后,this不再指向window,而是指向实例化对象
function Person(name){
this.name=name;
this.setName=function(name){
this.name=name;
}
this.getName=function(){
return this.name;
}
}
new Person("tom")
  • 函数中的this是一个引用变量,哪个实例对象调用的函数,this就指向这个实例
var setName=p1.setName;
setName("rose");
console.log(p1.name)
注意:这里调用setName函数的是window

javascript初体验(一)的更多相关文章

  1. 冒泡,快排算法之javascript初体验

    引子:javascript实际使用的排序算法在标准中没有定义,可能是冒泡或快排.不用数组原生的 sort() 方法来实现冒泡和快排. Part 1:冒泡排序(Bubble Sort) 原理:临近的两数 ...

  2. Handlebars的基本用法 Handlebars.js使用介绍 http://handlebarsjs.com/ Handlebars.js 模板引擎 javascript/jquery模板引擎——Handlebars初体验 handlebars.js 入门(1) 作为一名前端的你,必须掌握的模板引擎:Handlebars 前端数据模板handlebars与jquery整

    Handlebars的基本用法 使用Handlebars,你可以轻松创建语义化模板,Mustache模板和Handlebars是兼容的,所以你可以将Mustache导入Handlebars以使用 Ha ...

  3. python--爬虫入门(七)urllib库初体验以及中文编码问题的探讨

    python系列均基于python3.4环境 ---------@_@? --------------------------------------------------------------- ...

  4. Knockout.js初体验

    前不久在网上看到一个轻量级MVVM js类库叫Knockout.js,觉得很好奇,搜了一下Knockout.js相关资料,也初体验了一下,顿时感觉这个类库的设计很有意思.接下来就搞清楚什么是Knock ...

  5. SignalR初体验

    简介 ASP .NET SignalR[1]  是一个ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信.什么是实时通信的Web呢?就是让客户端(Web页面)和服务器端可以 ...

  6. node.js 初体验

    node.js 初体验 2011-10-31 22:56 by 聂微东, 174545 阅读, 118 评论, 收藏, 编辑 PS: ~ 此篇文章的进阶内容在为<Nodejs初阶之express ...

  7. grunt 构建工具(build tool)初体验

    操作环境:win8 系统,建议使用 git bash (window下的命令行工具) 1,安装node.js 官网下载:https://nodejs.org/  直接点击install ,会根据你的操 ...

  8. VSTO学习笔记(十五)Office 2013 初体验

    原文:VSTO学习笔记(十五)Office 2013 初体验 Office 2013 近期发布了首个面向消费者的预览版本,我也于第一时间进行了更新试用.从此开始VSTO系列全面转向Office 201 ...

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

    理解 组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素, Vue.js 的编译器为它添加特殊功能.在有些情况 ...

随机推荐

  1. Java,Scala:JDBCUtil,MySqlUtil,PhoenixJDBC

    Java,Scala:JDBCUtil,MySqlUtil,PhoenixJDBC pom.xml添加依赖 Java:方式一(亲测实用) 方式二:Scala 方式三:Java PhoenixJDBCU ...

  2. SpringMVC请求参数的获取方式

    一.GET请求参数获取 1. 通过HttpServletRequest获取参数 2. 直接方法参数获取 3. RequestParam注解方式获取请求参数 4. Bean方式获取参数 5. Model ...

  3. 设计模式(六)——建造者模式(源码StringBuilder分析)

    建造者模式 1 盖房项目需求 1) 需要建房子:这一过程为打桩.砌墙.封顶 2) 房子有各种各样的,比如普通房,高楼,别墅,各种房子的过程虽然一样,但是要求不要相同的. 3) 请编写程序,完成需求. ...

  4. Codeforces Round #682 (Div. 2)【ABCD】

    比赛链接:https://codeforces.com/contest/1438 A. Specific Tastes of Andre 题意 构造一个任意连续子数组元素之和为子数组长度倍数的数组. ...

  5. Codeforces Round #582 (Div. 3) E. Two Small Strings (构造,思维,全排列)

    题意:给你两个长度为\(2\)的字符串\(s\)和\(t\),你需要构造一个长度为\(3n\)的字符串,满足:含有\(n\)个\(a\),\(n\)个\(b\),\(n\)个\(c\),并且\(s\) ...

  6. Codeforces ECR86 C. Yet Another Counting Problem(规律,区间)

    题意:给你两个正整数a和b,询问q次,每次给你一个区间[l,r],问[l,r]中有多少数字满足:x%a%b!=a%b%a. 题解:看公式无从下手的题,一般都是要找规律的.首先,我们知道,假如x%a%b ...

  7. Codeforces Round #673 (Div. 2) C. k-Amazing Numbers (DP,思维)

    题意:有一组数,分别用长度从\([1,n]\)的区间去取子数组,要求取到的所有子数组中必须有共同的数,如果满足条件数组共同的数中最小的数,否则输出\(-1\). 题解:我们先从后面确定每两个相同数之间 ...

  8. Bone Collector II HDU - 2639 01背包第k最大值

    题意: 01背包,找出第k最优解 题解: 对于01背包最优解我们肯定都很熟悉 第k最优解的话也就是在dp方程上加一个维度来存它的第k最优解(dp[i][j]代表,体积为i能获得的第j最大价值) 对于每 ...

  9. universities

  10. Leetcode(337)-打家劫舍III

    小偷又发现一个新的可行窃的地点. 这个地区只有一个入口,称为"根". 除了根部之外,每栋房子有且只有一个父房子. 一番侦察之后,聪明的小偷意识到"这个地方的所有房屋形成了 ...