2012-02-10 74 views
4

從名稱「undefined」修剪前導和尾隨空格。修剪前導空間和尾部空間

trimName接受一個人作爲參數。人永遠是一個對象。如果未定義名稱,則返回undefined。否則,返回一個修剪過的名字。

var person = {}; 
var trimmedName; 
person.name; 
function trimName(person) { 
    // If you do not set this variable to a value, it will be 
    // undefined. 
    // Do a check here to see if a person's name is defined. 
    if (person.name = 'undefined') { 
    return 'undefined'; 
    } 
    else { 
    trimmedName = person.name.trim(); 
    return trimmedName; 
    } 
} 
trimName(' sam '); 
+0

你想返回'undefined'或''undefined''(字符串)? – kapa 2012-02-10 09:27:01

+3

請記住''String.prototype.trim'在所有瀏覽器中都不可用(特別是IE版本9以下的IE,我認爲),所以你會想使用一個shim(或者,因爲你已經標記了jQuery)'jQuery.trim '。 – 2012-02-10 09:27:55

回答

3

我沒有看到一個問題,有...但我看到的代碼問題:

  • 您正在使用賦值運算符=,你應該使用比較運算==
  • 將字符串與字符串'undefined'進行比較不是檢查屬性是否未定義的方法。
  • trim方法只存在於IE的最新版本(9)中。
  • 您正在使用字符串而不是對象調用函數。

代碼:

function trimName(person) { 
    var trimmed; 
    if (typeof person.name == 'undefined') { 
    trimmed = 'undefined'; 
    } else { 
    trimmed = person.name.replace(/(^\s+|\s+$)/g, ''); 
    } 
    return trimmed; 
} 

var trimmedName = trimName({ name: ' sam ' }); 

演示:http://jsfiddle.net/Guffa/vCkSq/

2

你應該做

var personTest = {name: ' sam'}; 

function trimName(person) { 
    // If you do not set this variable to a value, it will be 
    // undefined. 
    // Do a check here to see if a person's name is defined. 
    if (typeof person.name === 'undefined') { 
    return 'undefined'; 
    } 
    else { 
    var trimmedName = person.name.trim(); 
    return trimmedName; 
    } 
} 
alert(trimName(' sam ')); 
alert(trimName(personTest)); 

引擎收錄http://jsbin.com/oqovog/edit#source

+0

'var trimmedName;'在函數內更好。 – kapa 2012-02-10 09:29:28

+0

@bazmegakapa是的,當然,我已經移動它! :) – 2012-02-10 09:33:02

0
function trimName(person) { 
    // Check if the name of the person was defined 
    // If not, return undefined 
    if (person.name == 'undefined') { 
    return 'undefined'; 
    } 
    else { 
    // Otherwise trim the name and return it. 
    return person.name.replace(/^\s+|\s+$/g, ''); 
    } 
} 

// Create a person, set his name to " sam " with the spaces. 
var person = {}; 
person.name = " sam "; 

// Pass sam (the person object) to your function 
// Then alert() the result. 
alert(trimName(person)); 

看看這裏的代碼並閱讀註釋。我們創建一個人物對象,並將他的名字設置爲前導空格和尾隨空格。我們將它傳遞給我們測試它是否被定義的函數。如果是,我們將名稱修剪掉。

以下是編輯。

var person = {}; //creates the object "person" 
person.name = prompt('Please enter a name'); //defines name as a property 
function trimName(person) { //and gives it a value 
// If the property "name" is undefined 
// return undefined 
if (name === undefined) { //returns the code state "undefined" 
    return undefined; // if name is undefined 
} else if (person.name === '') { //returns a prompt if no name is entered 
    return 'Please enter a name'; 
} else { 
// Trim the "name" property, ensure it is a string 
return (person.name + '').trim(); //trims leading/trailing spaces 
} 
} 
trimName(person); //defines object person as a variable of function trimName 
+0

這不是檢查'undefined'的方法。 http://stackoverflow.com/questions/3390396/best-way-to-check-for-undefined-in-javascript – kapa 2012-02-10 09:33:32