js設計之初,並不強制使用var申明變量,這個設計後來帶來了嚴重的錯誤,如果一個變量沒有通過var聲明便使用,那麼該變量就自動被聲明爲全局變量。
在同一個頁面的不同js文件中,如果都不用var聲明,恰好都使用了變量i,將造成變量i 相互調用。
使用var聲明的變量則不是全局變量,他的範圍被限制在函數體內,同名變量在函數體內不相互影響。
,ECMA在後續規範中推出了strict模式,在strict模式下運行的JavaScript代碼,強制通過var
申明變量,未使用var
申明變量就使用的,將導致運行錯誤。
在js代碼第一行寫上 'use strict';
支持strict模式的瀏覽器將開啓strict模式運行JavaScript。
在函數體外部聲明的,全局變量可以在js文件之間相互調用。
字符串:
若字符串中需要輸出“” 可以在外部加上‘’ 例如' i am "a" ‘; 這種
ES6新增了一種多行字符串的表示方法。可以用` `包裹起來。
var str = `曹
開槍
你好`;
console.log(str);
模板字符串
var name = '小明'; var age = 20
進行字符串拼接用 + .
如果有很多變量需要連接,用+
號就比較麻煩。ES6新增了一種模板字符串,表示方法和上面的多行字符串一樣,但是它會自動替換字符串中的變量:
var name = '小明';
var age = '20';
var mess = `您好,${name},年齡${age}`;
要注意拼接時候的前面需要加上·、、、·;這種。
字符串的操作
使用列表一樣類似的索引。
var s = 'Hello, world!';
console.log(s[0]);
需要特別注意的是,字符串是不可變得,如果對字符串某個索引賦值是無效的。
age[0] = '8';
console.log(age);
indexof 會搜索指定字符串出現的位置 沒有找到返回-1
var s = 'hello world';
console.log(s.indexOf('hello'));
substring 返回指定區間的自傳 從索引0開始,但不包含5 不包含末尾
var res = s.substring(0,5);
console.log(res);